简介
字典是一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
dic = {'name': '小黄', 'age': '12', 'job': 'work', 'address': 'china', 'f': '3'}
1.元素追加
- 方法1:直接添加
dic['sex'] = 'male'
- 方法2:通过setdefault(key, value)添加, 该方法自带返回值,返回的是添加的value。
ret = dic.setdefault('color', 'yellow') # ret此时被复制为yellow
print('ret:', ret)
print(dic)
# 此外,该方法添加的键值对,如果字典已经存在了, 就不会重复添加。
ret = dic.setdefault('name', '小黄')
print("检查setdefault()的判重性:", dic)
- 方法3:dict1.update(dict2) 把字典dict2的键/值对更新到dict1里。(如果dict1和dict2如果有相同的键,那么对应的值,会以更新的为准,即dict2.)
dict1 = {'Name': 'Zara', 'Age': 7}
dict2 = {'Sex': 'female'}
dict1.update(dict2)
2.判断key是否存在
- 方法1:dict.has_key 返回值是True和False 。python2.2之前有这个函数,现在已经废弃。
- 方法2:in / not in dict
print('Sex' in dict1)
3.字典中的查找
- 查找都有哪些键
dic = {'name': '小牧', 'age': 12, 'job': 'work', 'address': 'china'}
print(dic.keys()) # 输出结果 dict_keys(['name', 'age', 'job', 'address'])
- 查找都有哪些值
dic = {'name': '小牧', 'age': 12, 'job': 'work', 'address': 'china'}
print(dic.values()) # 输出结果 dict_values(['小牧', 12, 'work', 'china'])
- 查找所有键值对
dic = {'name': '小牧', 'age': 12, 'job': 'work', 'address': 'china'}
print(dic.items()) # 输出结果 dict_items([('name', '小牧'), ('age', 12), ('job', 'work'), ('address', 'china')])
注意:items() keys() values()得到的返回值并不是list,需要转换形如:list(dic.key)!!!
4.字典中的删除
# 两个例子
del dic['name']
dic.clear() # 输出None
5.字典中的多层嵌套
cc = {
'ct':{
'sex':'male'
},
'wj':{
'sex':'female'
},
}
print(cc) # 结果 {'ct': {'sex': 'male'}, 'wj': {'sex': 'female'}}
print(cc['ct']) # 结果 {'sex': 'male'}
print(cc['ct']['sex']) # 结果 male
6.字典的遍历
for i in dic:
print(i) # 默认为健
print(i, dic[i]) # 得到key和value
for i, v in dic.items():
print(i, v) # 得到key和value
7.字典的特性(重要)
- 同一个键可以出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,举个栗子:
dict = {'Name': 'lcx', 'Age': 20, 'Name': 'lxy'};
print("dict['Name']: ", dict['Name']) # 输出 dict['Name']: lxy
- 键必须不可变,所以可以用数,字符串或元组(元祖不可变)充当,所以用列表就不行。