#python基础 / DAY5(日常总结)#

字典是python中唯一的映射类型,采用键值对的形式存储(key-value)的形式存储数据。 python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的,可哈希表示key必须是不可变的数据类型,如:数字,字符串,元祖,值可以是任意数据类型

字典键的特性:

字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

1 #!/usr/bin/python
2  
3 dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
4  
5 print "dict['Name']: ", dict['Name'];

以上实例输出结果:

1 dict['Name']:  Manni

2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,如下实例:

1 #!/usr/bin/python
2  
3 dict = {['Name']: 'Zara', 'Age': 7};
4  
5 print "dict['Name']: ", dict['Name'];

以上实例输出结果:

1 Traceback (most recent call last):
2   File "test.py", line 3, in <module>
3     dict = {['Name']: 'Zara', 'Age': 7};
4 TypeError: list objects are unhashable

字典类型与序列类型的区别:

1.存取和访问数据的方式不同。
2.序列类型只用数字类型的键(从序列的开始按数值顺序索引);
3.映射类型可以用其他对象类型作键(如:数字、字符串、元祖,一般用字符串作键),和序列类型的键不同,映射类型的键直接或间接地和存储数据值相关联。
4.映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。
5.映射类型用键直接“映射”到值。

 #增:

1 #增加:
2 #dic['hobby'] = 'car' #如果里面没有对应的键值 直接追加
3 #dic.setdefault('hobby','car')#如果增加进去的只有键的话 对应的值就是None   但是如果原字典里存在设置的键值的话 则他不会更改或覆盖
4 print(dic)

#删:

1 #删:
 2 str = dic.pop('sex',None) #Python 字典 pop() 方法删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
 3 print(str)
 4 # del dic['sex'] #直接删除 没有返回值
 5 # print(dic)
 6 
 7 # dic_pop1 = dic.popitem()  # 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回
 8 # print(dic_pop1)  # ('name','jin')
 9 
10 # dic_clear = dic.clear()  # 清空字典
11 # print(dic,dic_clear)  # {} None

 #改:

1 # 改
2 dic = {"name":"jin","age":18,"sex":"male"}
3 dic2 = {"name":"alex","weight":75}
4 print(dic2.update(dic))  # 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中
5 print(dic2)

 #查:

1 # value1 = dic["name"]  # 没有会报错
2 # print(value1)
3 #
4 # value2 = dic.get("djffdsafg","默认返回值")  # 没有可以返回设定的返回值
5 # print(value2)

#其他操作:

1 # item = dic.items()
2 # print(item,type(item))  # dict_items([('name', 'jin'), ('sex', 'male'), ('age', 18)]) <class 'dict_items'>
3 # 这个类型就是dict_items类型,可迭代的
4 
5 # keys = dic.keys()
6 # print(keys,type(keys))  # dict_keys(['sex', 'age', 'name']) <class 'dict_keys'>
7 
8 # values = dic.values()
9 # print(values,type(values))  # dict_values(['male', 18, 'jin']) <class 'dict_values'> 同上

#字典的循环

1 # dic = {"name":"jin","age":18,"sex":"male"}
2 # for key in dic:
3 #     print(key)
4 # for item in dic.items():
5 #     print(item)
6 # for key,value in dic.items():
7 #     print(key,value)