python中的字典

2019-08-26  本文已影响0人  iDevOps

通过编号来访问各个值时, 列表很有用。
我们这里介绍一种可通过名称来访问各个值的数据结构, 这种数据结构成为字典。
1.字典的值不按顺序排列, 而是存在健下,
2.健可以是数字, 字符串或元祖

创建字典
persons = {'zhansan': 11, 'lisi': 12}
字典的基本操作
dict[k] = v
dict[k]
del dict[k]
k in dict
len(dict)
dict.clear()
person1 = {'name': 'lisi', 'hobby': ['lanqiu', 'zuqiu', 'paiqiu']}
person2 = person1.copy()
print(person1)  # {'hobby': ['lanqiu', 'zuqiu', 'paiqiu'], 'name': 'lisi'}
print(person2)  # {'hobby': ['lanqiu', 'zuqiu', 'paiqiu'], 'name': 'lisi'}
person2['name'] = 'zhangsan'
person2['hobby'].remove('zuqiu')
print(person1)  # {'hobby': ['lanqiu', 'paiqiu'], 'name': 'lisi'}
print(person2)  # {'hobby': ['lanqiu', 'paiqiu'], 'name': 'zhangsan'}

修改person2的hobby, person1也被改变了, 所以这种拷贝是浅拷贝
为了避免这种问题, 可以使用深拷贝, deepcopy

from copy import deepcopy
person1 = {'name': 'lisi', 'hobby': ['lanqiu', 'zuqiu', 'paiqiu']}
person2 = deepcopy(person1)
print(person1)  # {'hobby': ['lanqiu', 'zuqiu', 'paiqiu'], 'name': 'lisi'}
print(person2)  # {'hobby': ['lanqiu', 'zuqiu', 'paiqiu'], 'name': 'lisi'}
person2['name'] = 'zhangsan'
person2['hobby'].remove('zuqiu')
print(person1)  # {'hobby': ['lanqiu', 'zuqiu', 'paiqiu'], 'name': 'lisi'}
print(person2)  # {'hobby': ['lanqiu', 'paiqiu'], 'name': 'zhangsan'}
d = {}.fromkeys(['name', 'age'])
print(d)  # {'age': None, 'name': None}
d.get('name')  # name不存在, 会返回None
d.get('name', 'lisi')  # 也可以返回指定的值
person = {'name': 'lisi', 'age': 11}
print(person.items())  # [('age', 11), ('name', 'lisi')]
print(person.keys())  # ['age', 'name']
print(person.values())  # [11, 'lisi']
person = {'name': 'lisi', 'age': 11}
person.pop('name')
print(person)  # {'age': 11}
dict

序列转字典

person = [('name', 'zhangsan'), ('age', 11)]
d1 = dict(person)  # {'age': 11, 'name': 'zhangsan'}
或
d2 = dict(name='lisi', age=12)  # {'age': 12, 'name': 'lisi'}
上一篇下一篇

猜你喜欢

热点阅读