5、python-常见数据类型-字典(dict)

2023-12-29 12:32:55

一.创建字典

d1 = {'name': 'ethan', 'age': 20}
d2 = dict(name='ethan', age=20)
item = [('name', 'ethan'), ('age', 20)]
d3 = dict(item)
print(d1)
print(d2)
print(d3)

# {'name': 'ethan', 'age': 20}
# {'name': 'ethan', 'age': 20}
# {'name': 'ethan', 'age': 20}

二.遍历字典

d1 = {'name': 'ethan', 'age': 20}
# TODO 遍历key
for k in d1.keys():
    print(k)
print('----------')
# TODO 遍历values
for v in d1.values():
    print(v)
print('----------')
# TODO 遍历key、values
for k, v in d1.items():
    print(k, v)

# name
# age
# ----------
# ethan
# 20
# ----------
# name ethan
# age 20

三.判断键/值是否在字典里面

d1 = {'name': 'ethan', 'age': 20}
# TODO 判断键是否在字典里面
if 'name' in d1.keys():
    print('name键在字典中')

# TODO 判断值是否在字典里面
if 20 in d1.values():
    print('20值在字典中')

# name键在字典中
# 20值在字典中

四.清空字典clear

用于清空字典中的所有项

d1 = {'name': 'ethan', 'age': 20}
d1.clear()
print(d1)

# {}

五.浅拷贝copy

# TODO 对可变对象的修改保持同步
d1 = {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
d2 = d1.copy()
d2['test'].remove(1)
print(d1)
print(d2)
# TODO 对不可变对象的修改保持独立
d11 = {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
d22 = d11.copy()
d22['name'] = '123'
print(d11)
print(d22)

# {'name': 'ethan', 'age': 20, 'test': [2, 3]}
# {'name': 'ethan', 'age': 20, 'test': [2, 3]}
# {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
# {'name': '123', 'age': 20, 'test': [1, 2, 3]}

六.深拷贝deepcopy

from copy import deepcopy

#TODO对可变对象的修改,不会影响到原对象
d1 = {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
d2 = deepcopy(d1)
d2['test'].remove(1)
print(d1)
print(d2)
#TODO对不可变对象的修改,任何修改不会影响到原对象
d11 = {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
d22 = deepcopy(d11)
d22['name'] = '123'
print(d11)
print(d22)
#TODO 结论:任何修改不会影响到

# {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
# {'name': 'ethan', 'age': 20, 'test': [2, 3]}
# {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
# {'name': '123', 'age': 20, 'test': [1, 2, 3]}

七.获取字典某个元素get

当我们试图访问字典中不存在的项时会出现 KeyError,但使用 get 就可以避免这个问题

d1 = {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
print(d1.get('name'))
print(d1.get('password'))

# ethan
# None

八.设定键值setdefault

用于对字典设定键值

# TODO 当键不存在的时候,setdefault 返回设定的默认值并且更新字典
d = {}
d.setdefault('name', 'tanglei')
print(d)
# TODO 当键存在的时候,会返回已有的值,但不会更新字典
d['age'] = 18
print(d)
d.setdefault('age', 20)
print(d)

# {'name': 'tanglei'}
# {'name': 'tanglei', 'age': 18}
# {'name': 'tanglei', 'age': 18}

九.更新字典update

用于将一个字典添加到原字典,如果存在相同的键则会进行覆盖

# TODO 将一个字典添加到原字典
d = {"name": "mike"}
e = {"age": 18}
d.update(e)
print(d)
# TODO 存在相同的键则会进行覆盖
a = {"name": "mike"}
b = {'name': 'tom', 'age': 18}
a.update(b)
print(a)

# {'name': 'mike', 'age': 18}
# {'name': 'tom', 'age': 18}

十.items

将所有的字典项以列表形式返回,这些列表项的每一项都来自于(键,值)

b = {'name': 'tom', 'age': 18}
e = b.items()
print(e)
for k, v in b.items():
    print(k, v)

# dict_items([('name', 'tom'), ('age', 18)])
# name tom
# age 18

十一.keys/values

keys 方法将字典的键以列表形式返回

values 方法将字典的值以列表形式返回

b = {'name': 'tom', 'age': 18}
# TODO 获取key
print(b.keys())
# TODO 获取value
print(b.values())

十二.移除pop

用于将某个键值对从字典移除,并返回给定键的值

b = {'name': 'tom', 'age': 18}
e = b.pop('name')
print(e)
print(b)

# tom
# {'age': 18}

十三.移除popitem

用于随机移除字典中的某个键值对

b = {'name': 'tom', 'age': 18}
e = b.popitem()
print(e)
print(b)

# ('age', 18)
# {'name': 'tom'}

文章来源:https://blog.csdn.net/qq_36076898/article/details/135287798
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。