python基础(四):字典的操作
python3
pycharm
dict字典是‘键’(key)、‘值’(value)对的集合
特性1、不允许同一个key出现两次,若出现两相同的key,则后一个key:value会被记录下来
dict={'a':1,'b':2,'c':3,'a':2} print(dict) print(dict['a']) --------------- {'a': 2, 'b': 2, 'c': 3} 2
特性2、key必须不可变,列表不可充当字典的key
dict={[1]:1,'b':2,'c':3,} print(dict[[1]])
---------------
TypeError: unhashable type: 'list'
一、dict增
1、赋值的方式直接加入
#dict增加 key-value对 dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) dict['key_add']='value_add' print(dict)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42'], 'key_add': 'value_add'}
2、setdefault()方法加入
#加入已经存在的key-value,不会产生改变 dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) dict.setdefault('key_1','value_xx') print(dict)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
#单独加入key,默认对应的value为None dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) dict.setdefault('key_add') print(dict)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42'], 'key_add': None}
#加入key-value dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) dict.setdefault('key_add','value_add') print(dict)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42'], 'key_add': 'value_add'}
二、dict删
1、pop('key')
#根据key删除对应的value dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) dict.pop('key_2') print(dict)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
{'key_1': 'value_1', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
2、删除最后一对key-value
#删除最后一对key-value dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) dict.popitem() print(dict)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}}
3、语句
#del语句删除对应key的key-value对 dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) del dict['key_3'] print(dict)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
{'key_1': 'value_1', 'key_2': 'value_2', 'key_4': ['value_41', 'value_42']}
4、清空dict
#清空整个字典 dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) dict.clear() print(dict)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
{}
三、dict改
1、直接对对应的key赋值新的value
#修改value dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) dict['key_3']=[1,2] print(dict)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': [1, 2], 'key_4': ['value_41', 'value_42']}
四、dict查
1、dict[key]
#查找value dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) value=dict['key_3'] print(value)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
{'key_31': 'value_31', 'key_32': 'value_32'}
2、get[key]
#查找value dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } print(dict) value=dict.get('key_4') print(value)
---------------
{'key_1': 'value_1', 'key_2': 'value_2', 'key_3': {'key_31': 'value_31', 'key_32': 'value_32'}, 'key_4': ['value_41', 'value_42']}
['value_41', 'value_42']
3、遍历key和value
#遍历key、value dict={ 'key_1':'value_1', 'key_2':'value_2', 'key_3':{ 'key_31':'value_31', 'key_32':'value_32', }, 'key_4':['value_41','value_42'], } list_key=[] list_value=[] for key in dict.keys(): list_key.append(key) for value in dict.values(): list_value.append(value) print(list_key) print(list_value)
---------------
['key_1', 'key_2', 'key_3', 'key_4']
['value_1', 'value_2', {'key_31': 'value_31', 'key_32': 'value_32'}, ['value_41', 'value_42']]
五、通用方法
radiansdict.clear() #删除字典内所有元素 radiansdict.copy() #返回一个字典的浅复制 radiansdict.fromkeys() #创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 radiansdict.get(key, default=None) #返回指定键的值,如果值不在字典中返回default值 radiansdict.has_key(key) #如果键在字典dict里返回true,否则返回false radiansdict.items() #以列表返回可遍历的(键, 值) 元组数组 radiansdict.keys() #以列表返回一个字典所有的键 radiansdict.setdefault(key, default=None) #和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default radiansdict.update(dict2) #把字典dict2的键/值对更新到dict里 radiansdict.values() #以列表返回字典中的所有值