基本数据类型及内置方法之字典

字典(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}

字典为无序 可变 多个值的类型

posted @ 2019-11-06 19:11  bing丶  阅读(138)  评论(0编辑  收藏  举报