本文来源于微信公众号 印象Python:如此Python,谁人不爱? 如有侵权,联系必删

1. 字典(Dict)介绍

字典是Python提供的一种常用的数据结构,用于存放具有映射关系的数据

字典是可变容器模型,可存储任意类型对象

字典相当于保存了两组数据:

  • 一组数据是关键数据,被称为key
  • 另一组数据可通过key来访问,被称为value

dict

字典中的key是非常关键的数据,而且程序需要通过key来访问value,因此字典中的key不允许重复

2. 使用技巧

1. 增删改查

1. 添加

语法:

dict[key] = value

  • 说明:key不存在则添加;key存在则替换

示例:

d = {'姓名': '张三', '性别': '男', '年龄': 28}
print('原始字典:', d)
# 原始字典: {'姓名': '张三', '性别': '男', '年龄': 28}

# 添加1:key不相同则添加
d['地址'] = '北京'
print('添加1:', d)
# 添加1: {'姓名': '张三', '性别': '男', '年龄': 28, '地址': '北京'}

# 添加2:key相同则更新(替换)
d['姓名'] = '张三丰'
print('添加2:', d)
# 添加2: {'姓名': '张三丰', '性别': '男', '年龄': 28, '地址': '北京'}
2. 删除

语法:

根据key删除:dict.pop(key)、del dict[key]

随机删除:dict.popitem()

  • 本人试了下,可能是版本的缘故,popitem()会删除最后一个。因为Python3.6+中字典是有序的了

清空字典:dict.clear()

删除字典:del dict

示例:

d = {'姓名': '张三', '性别': '男', '年龄': 28}
print('原始字典:', d)
# 原始字典: {'姓名': '张三', '性别': '男', '年龄': 28}

# 删除1:根据key:pop(key)和 del d[key]
d.pop('性别')
print('删除1:', d)
# 删除1: {'姓名': '张三', '年龄': 28}

del d['性别']
print('删除1:', d)
# 删除4: {'姓名': '张三', '年龄': 28}

# 删除2:随机删除
d.popitem()
print('删除2:', d)
# 删除2: {'姓名': '张三', '性别': '男'}

# 删除3:清空字典
d.clear()
print('删除3:', d)
# 删除3: {}

# 删除5:删除字典
del d
print('删除5:', d)
# error: NameError: name 'd' is not defined
3. 修改

修改和新增一样,只是确保key存在。

d = {'姓名': '张三', '性别': '男', '年龄': 28}
print('原始字典:', d)
# 原始字典: {'姓名': '张三', '性别': '男', '年龄': 28}

d['姓名'] = '张三丰'
print('修改:', d)
# 修改: {'姓名': '张三丰', '性别': '男', '年龄': 28, '地址': '北京'}
4. 查询

语法:

v = dict[key]

  • 不存在会抛出:KeyError

v = dict.get(key)

  • 不存在会返回None

示例:

d = {'姓名': '张三', '性别': '男', '年龄': 28}
print('原始字典:', d)
# 原始字典: {'姓名': '张三', '性别': '男', '年龄': 28}

# 1. 查询1:使用key
name = d['姓名']
print('key查询:', name)
# key查询: 张三

# 2. 查询2:使用get()
age = d.get('年龄')
print('get查询:', age)
# get查询: 28

2. keys()、values()、items()

1. 获取keys()、values()、items()
d = {'姓名': '张三', '性别': '男', '年龄': 28}

print('keys:', d.keys())
# keys: dict_keys(['姓名', '性别', '年龄'])

print('values:', d.values())
# values: dict_values(['张三', '男', 28])

print('items:', d.items())
# items: dict_items([('姓名', '张三'), ('性别', '男'), ('年龄', 28)])
2. 通过key获取所有的键
d = {'姓名': '张三', '性别': '男', '年龄': 28}
for k in d:
    print('key值为:', k)
'''
key值为: 姓名
key值为: 性别
key值为: 年龄
'''
3. 通过key获取所有的值
d = {'姓名': '张三', '性别': '男', '年龄': 28}
for k in d:
    print('values值为:', d[k])
'''
values值为: 张三
values值为: 男
values值为: 28
'''
4. 通过value获取所有的值
d = {'姓名': '张三', '性别': '男', '年龄': 28}
for v in d.values():
    print('values值为:', v)
'''
values值为: 张三
values值为: 男
values值为: 28
'''
5. 通过items()获取所有键值对
  • 方式一:键值对以元组方式返回
d = {'姓名': '张三', '性别': '男', '年龄': 28}
for i in d.items():
    print('items()值为:', i)
'''
items()值为: ('姓名', '张三')
items()值为: ('性别', '男')
items()值为: ('年龄', 28)
'''
  • 方式二:键值对直接返回
d = {'姓名': '张三', '性别': '男', '年龄': 28}
for k, v in d.items():
    print(k, v)
'''
姓名 张三
性别 男
年龄 28
'''

3. 合并字典

1. 使用update()方法合并

语法:

new_dict = dict1.update(dict2)

示例:

d1 = {'姓名': '张三', '性别': '男', '年龄': 28}
d2 = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}

d1.update(d2)
print('d1:', d1)
# d1: {'姓名': '张三', '性别': '男', '年龄': 28, '刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
2. 使用**合并

语法:

new_dict = dict(dict1, **dict2)

示例:

d1 = {'姓名': '张三', '性别': '男', '年龄': 28}
d2 = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}

d3 = dict(d1, **d2)  # d3 = dict(**d1) 则d3是d1的复制
print('d3:', d3)
# d3: {'姓名': '张三', '性别': '男', '年龄': 28, '刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
3. 使用 | 合并

语法:

new_dict = dict1|dict2

示例:

d1 = {'姓名': '张三', '性别': '男', '年龄': 28}
d2 = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}

d3 = d1|d2
print('d3:', d3)
# d3: {'姓名': '张三', '性别': '男', '年龄': 28, '刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}

4. 检查键是否存在于字典中

方法

key in dict

  • 存在返回True,不存在返回False

示例:

dict = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}

def key_in_dict(dict, key):
    return key in dict

if __name__ == '__main__':
    print(key_in_dict(dict, '刘备'))  # True
    print(key_in_dict(dict, '关羽'))  # False

5. 获取字典中所有键组成的列表

语法:

list(dict.keys())

示例:

dict = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}

def get_keys(dict):
    return list(dict.keys())

if __name__ == '__main__':
    print(get_keys(dict))
# ['刘备', '张飞', '曹操']

6. 获取字典中所有的值组成的列表

语法:

list(dict.values())

示例:

dict = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}

def get_values(dict):
    return list(dict.values())

if __name__ == '__main__':
    print(get_values(dict))
# ['玄德', '翼德', '孟德']

7. 将字典所有键值对转换为元组列表

语法:

list(dict.items())

示例:

dict = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}

def dict_to_list(dict):
    return list(dict.items())

if __name__ == '__main__':
    print(dict_to_list(dict))
# [('刘备', '玄德'), ('张飞', '翼德'), ('曹操', '孟德')]

8. 将两个列表组合成一个字典

语法:

dict(zip(list1, list2))

示例:

list1 = ['姓名', '性别', '年龄']
list2 = ['张三', '男', 28]

def list_to_dict(keys, values):
    return dict(zip(keys, values))

if __name__ == '__main__':
	# list1与list2和keys与values对应,list1为keys,list2为values
    print(list_to_dict(list1, list2))
# {'姓名': '张三', '性别': '男', '年龄': 28}
  • 注意:注意list顺序和keys/values顺序,避免顺序搭配错误

9. 计算字典长度

语法:

len(dict)

示例:

dict = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
print(len(dict))
# 3
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐