Python中的字典
1.字典的比较
字典的比较顺序如下:
- 先比较字典的元素的个数,那个多,就哪个大;
- 比较字典的键,在比较字典的键的时候,需要注意的是比较的顺序是按照keys返回值来进行的比较;
- 比较字典的值,值也是按照items返回值来进行比较,主要就是按照数字和字母的大小比较;
- 如果以上的比较都相等,那么就都是相等的。
cmp(dict1,dict2):如果两个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1。
>>>dict1={'name':'af','better':'yes'} >>> dict2={'age':'12'} >>> cmp(dict1,dict2) 1 >>> dict1={'name':'kel'} >>> dict2={} >>> cmp(dict1,dict2) #dict1的元素比dict2的多 1 >>> dict3={'name':'a'} >>> cmp(dict1,dict3) #dict1的kel比a大,字母k在a的后面 1 >>> dict4={'name':'kel','age':27} >>> dict5={'name':'mel','age':17} #比较的时候,根据keys返回的比较,所以27比17大,而不是比较我们看到的顺序 >>> cmp(dict4,dict5) 1 #keys的顺序是'age','name'
2.字典的合并
1)借助dict(d1.items() + d2.items())的方法
>>> d1={'a':'1','b':'2'} >>> d2={'c':'3'} >>> dict(d1.items()+d2.items()) {'a': '1', 'c': '3', 'b': '2'} >>> >>> dict(d2.items()+d1.items()) {'a': '1', 'c': '3', 'b': '2'} >>> >>> #有相同的key值,会合并 >>> d3={'c':'3','b':'4'} >>> dict(d3.items()+d1.items()) {'a': '1', 'c': '3', 'b': '2'} >>> dict(d1.items()+d3.items()) {'a': '1', 'c': '3', 'b': '4'}
备注:
- d1.items()获取字典的键值对的列表
- d1.items() + d2.items()拼成一个新的列表
- dict(d1.items()+d2.items())将合并成的列表转变成新的字典
2)借助字典的update()方法
>>> d1 {'a': '1', 'b': '2'} >>> d3 {'c': '3', 'b': '4'} >>> d4={} >>> d4.update(d1) >>> d4 {'a': '1', 'b': '2'} >>> d4.update(d3) >>> d4 {'a': '1', 'c': '3', 'b': '4'} >>> #使用copy >>> d4=d1.copy() >>> d4 {'a': '1', 'b': '2'} >>> d4.update(d3) >>> d4 {'a': '1', 'c': '3', 'b': '4'}
3)借助字典的dict(d1, **d2)方法
>>> d1 {'a': '1', 'b': '2'} >>> d3 {'c': '3', 'b': '4'} >>> >>> dict(d1,**d3) {'a': '1', 'c': '3', 'b': '4'} >>> dict(d3,**d1) {'a': '1', 'c': '3', 'b': '2'}
4)借助字典的常规for循环处理方法
>>> d1 {'a': '1', 'b': '2'} >>> d3 {'c': '3', 'b': '4'} >>> d4={} >>> >>> for i,v in d1.items(): ... d4[i]=v ... >>> d4 {'a': '1', 'b': '2'} >>> for i,v in d3.items(): ... d4[i]=v ... >>> d4 {'a': '1', 'c': '3', 'b': '4'}