字典(dict)
定义方式:通过大括号存储数据,通过key:value来定义键值对数据, 其中value可以是任意类型,而key则必须是不可变类型 ,因为str类型会对value有描述性的功能,每个键值对中间通过逗号分割
三种定义方式
#第一种
d1 = {'name': 'sean'}
#第二种
d1 = dict(name= 'sean')
#第三种zip
l1 = ['name', 'age']
l2 = ['sean', 18]
z1 = zip(l1, l2)
print(dict(z1))
{'name': 'sean', 'age': 18}
类型转换
# 转换1:
>>> info=dict([['name','tony'],('age',18)])
>>> info
{'age': 18, 'name': 'tony'}
# 转换2:fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
>>> {}.fromkeys(('name','age','sex'),None)
{'age': None, 'sex': None, 'name': None}
需要掌握
按照key:value的映射关系取值(可存可取)
#取
l1 = {'name': 'sean', 'age': 18}
print(l1['name'])
sean
#赋值,如果key原先不存在于字典,则会新增key:value
l1 = {'name': 'sean', 'age': 18}
l1['name'] = 'egon'
print(l1)
{'name': 'egon', 'age': 18}
l1['gender'] = 'female'
print(l1)
{'name': 'egon', 'age': 18, 'gender': 'female'}
成员运算(in,not in)
l1 = {'name': 'sean', 'age': 18}
print('name' in l1) #判断某个值是否是字典的key
True
print('name' not in l1)
False
len()
#获取字典中键值对的个数
l1 = {'name': 'sean', 'age': 18}
print(len(l1))
2
键keys(),值values(),键值对items()
l1 = {'name': 'sean', 'age': 18}
print(l1.keys())
dict_keys(['name', 'age'])
print(l1.values())
dict_values(['sean', 18])
print(l1.items())
dict_items([('name', 'sean'), ('age', 18)])
get()
#get()获取指定key的值,如果值不存在,默认返回None,可以通过第二个参数修改默认返回列表
l1 = {'name': 'sean', 'age': 18}
print(l1.get('name'))
sean
print(l1.get('gender'))
None
print(l1.get('gender', '*'))
*
删除
#pop()指定key进行删除,返回值为对应的value
l1 = {'name': 'sean', 'age': 18}
print(l1.pop('name'))
sean
#popitem随机弹出一个键值对,返回值为一个元组
l1 = {'name': 'sean', 'age': 18}
print(l1.popitem())
('age', 18)
update()
#用新字典更新旧字典,有则修改,无则添加
l1 = {'name': 'sean', 'age': 18}
l1.update({'name':'egon'})
print(l1)
{'name': 'egon', 'age': 18}
l1.update({'gender': 'female'})
print(l1)
{'name': 'egon', 'age': 18, 'gender': 'female'}
formkeys()
#生成一个新字典,第一个参数(列表),它会以第一个参数中的各个元素为key,以第二个参数为值,组成一个新字典
l1 = dict.fromkeys(['a', 'b', 'c'], [1])
print(l1)
{'a': [1], 'b': [1], 'c': [1]}
setdefault()
#key不存在,则新增键值对;key存在返回对应的value
l1 = {'name': 'sean', 'age': 18}
l2 = l1.setdefault('gender', 'female')
print(l2)
female
print(l1)
{'name': 'sean', 'age': 18, 'gender': 'female'}
#key存在,则不做任何修改,并返回已存在key对应的value值
l1 = dict.fromkeys(['a', 'b', 'c'], [1])
l3 = l1.setdefault('name', 'egon')
print(l3)
sean
print(l1)
{'name': 'sean', 'age': 18}
字典为无序 可变 多个值的类型