python 字典Dict

一种序列类型,使用键-值(key-value)存储,具有极快的查找速度。

目录

key的特性

创建字典

元素的访问

Get获取

修改

是否存在key

删除

删除单个

删除全部

遍历

遍历key与值

只遍历值

遍历key,value方法2

结合enumerate遍历

和list比较

总结


key的特性

1.字典中的key必须唯一

2.key必须是不可变对象

3.字符串、整数等都是不可变的,可以作为key

4.list是可变的,不能作为key

注意:字典是无序的,存储先后顺序不等于最终字典顺序。

创建字典

dict1 = {'hanmei': 85, 'lilei': 80}

元素的访问

获取:字典名[key]

例:

print(dict1['hanmei']) # 85
print(dict1['lilei'])  # 80

当没有的时候,如果这时去获取,就会报错。

print(dict1['zhangsan'])

如下:

python 字典Dict_第1张图片

Get获取

使用.get方式获取,可设置默认值在获取不到时返回。

代码如下:

res = dict1.get('zhangsan')
if res == None:
    print('没有')
else:
    print('有')

效果:

没有

修改

因为一个key对应一个value,所以再次对同一个key的value进行赋值,

就会修改原有key的value值。

代码如下:

dict1['zhangsan'] = 99
dict1['lilei'] = 88
print(dict1) # {'hanmei': 85, 'lilei': 88, 'zhangsan': 99}

是否存在key

使用in来判断相应key是否存在字典中。

代码如下:

dict2 = {'hanmei': 85, 'lilei': 80, 'zhangsan': 99, 'lisi': 88}
print('zhangsan' in dict2) # True

删除

删除单个

删除可使用.pop(key)方式删除相应key-value

代码如下:

# 韩梅转学了
dict1.pop('hanmei')
print(dict1)

效果:

{'hanmei': 85, 'lilei': 88, 'zhangsan': 99}
{'lilei': 88, 'zhangsan': 99}

删除全部

使用.clear()方法,来删除字典所有的键值对。

代码如下:

dict2 = {'hanmei': 85, 'lilei': 80, 'zhangsan': 99, 'lisi': 88}
dict2.clear()
print(dict2) # {}

当删除所有键值对后,打印出来的就是空字典。

遍历

遍历key与值

dict2 = {'hanmei': 85, 'lilei': 80, 'zhangsan': 99, 'lisi': 88}
for key in dict2:
    print(key, dict2[key])

效果:

hanmei 85
lilei 80
zhangsan 99
lisi 88

只遍历值

使用.values()方式获取字典所有值,为一个列表类型。

代码如下:

print(dict2.values())

for value in dict2.values():
    print(value)

效果:

dict_values([85, 80, 99, 88])
85
80
99
88

遍历key,value方法2

可通过字典的items()方法获取中的所有键值对,用来遍历。

代码如下:

for k, v in dict2.items():
    print(k, '=>', v)

效果:

hanmei => 85
lilei => 80
zhangsan => 99
lisi => 88

结合enumerate遍历

还有一种遍历key和value的方式。

for i, v in enumerate(dict2):
    print(i, '=>', v)

效果:

0 => hanmei
1 => lilei
2 => zhangsan
3 => lisi

和list比较

1.查找和插入的速度极快,不会随着key-value的增加而变慢。

2.需要占用大量的内存,内存浪费多。

总结

应用场景比较多,可以在复杂场景中使用,使用起来也比较灵活,类似与php的array数据类型。

你可能感兴趣的:(Python,python,开发语言,后端)