python 遍历dict元素-python dict 遍历顺序
dict
定义
dict中,每一项包含一个key和一个value,key和value是一一对应的。
d = {
‘Alice’: 45,
‘Bob’: 60,
‘Candy’: 75,
‘David’: 86,
‘Ellena’: 49
}
print(d)
==>{‘Alice’: 45, ‘Bob’: 60, ‘Candy’: 75, ‘David’: 86, ‘Ellena’: 49}
在定义里,我们使用花括号{}表示这是一个dict,然后key和value之间使用冒号:分割python 遍历dict元素,并且每一组key:value的最后,以逗号,表示这一组的结束。
我们也可以使用以下的方式定义一个dict。
d = dict()
print(d) # ==> {}
不过这种定义方式,默认得到的是一个空dict,需要调用函数往里面添加数据。
读取dict中元素值
d[key]
if ‘Alice’ in d:
print(d[‘Alice’]) # ==> 45
if ‘Dodo’ in d: # Dodo不存在,所以不会走下面的逻辑
print(d[‘Dodo’])
d.get(key)
print(d.get(‘Alice’)) # ==> 45
print(d.get(‘Dodo’)) # ==> None
添加元素
需要往里面添加Dodo、Mimi的成绩时,可以使用赋值语句往里面添加元素:
d[‘Mimi’] = 72
d[‘Dodo’] = 88
value可以是任意类型的元素python 遍历dict元素,可以是list、tuple等
更新元素
当key不存在时,往dict中添加对应的key: value元素。
当key存在时,会更新dict,用新的value替换原来的value。
为了避免不必要的覆盖问题,我们需要先***判断key是否存在,然后再做更新。***
删除元素
pop()方法需要指定需要删除的元素的key,并返回对应的value。
假设Alice转校了,需要把Alice的成绩删除,可以这样写:
print(d) # ==> {‘Alice’: 45, ‘Bob’: 60, ‘Candy’: 75, ‘David’: 86, ‘Ellena’: 49}
alice_score= d.pop(‘Alice’)
print(alice_score) # ==> 45
print(d) # ==> {‘Bob’: 60, ‘Candy’: 75, ‘David’: 86, ‘Ellena’: 49}
若Alcie不存在 会报错,先判断
name = ‘Alice’
if name in d.keys():
d.pop(name)
else:
print(’{} not in d’.format(name))
特点
***优点***查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
***缺点***是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢
key不可变
遍历dict
遍历dict有两种方法
第一种是遍历dict的所有key,并通过key获得对应的value。
d = {
‘Alice’: 45,
‘Bob’: 60,
‘Candy’: 75,
‘David’: 86,
‘Ellena’: 49
}
for key in d: # 遍历d的key
value = d[key]
if value > 60:
print(key, value)
==> Candy 75
==>David 86
第二种方法是通过dict提供的items()方法,items()方法会返回dict中所有的元素,每个元素包含key和value。
for key, value in d.items():
if value > 60:
print(key, value)
==> Candy 75
==>David 86
获取dict的所有key
dict提供keys()函数,可以返回dict中所有的key。
d = {‘Alice’: [50, 61, 66], ‘Bob’: [80, 61, 66], ‘Candy’: [88, 75, 90]}
for key in d.keys():
print(key)
获取dict所有的value
dict提供values()函数,可以返回dict中所有的value。
d = {‘Alice’: [50, 61, 66], ‘Bob’: [80, 61, 66], ‘Candy’: [88, 75, 90]}
for key in d.values():
print(key)
清除所有元素
dict提供clear()函数,可以直接清除dict中所有的元素。
d = {‘Alice’: [50, 61, 66], ‘Bob’: [80, 61, 66], ‘Candy’: [88, 75, 90]}
print(d) # ==> {‘Alice’: [50, 61, 66], ‘Bob’: [80, 61, 66], ‘Candy’: [88, 75, 90]}
d.clear()
print(d) # ==> {}