网站首页 > 基础教程 正文
字典
Python 中的字典是一种无序的可变容器模型,它以键值对(key - value)的形式存储数据,通过键来访问对应的值,就像一本字典通过词条(键)查找解释(值)一样。本文介绍字典常用的操作方法。
获取所有键
a = {"1":1, "2":2, "3":3}
b = {"2":2, "3":3, "4":4}
a.keys()
['1', '3', '2']
获取键和值
a = {"1":1, "2":2, "3":3}
a.items()
dict_items([('1', 1), ('2', 2), ('3', 3)])
查找相同键
a = {"1":1, "2":2, "3":3}
b = {"2":2, "3":3, "4":4}
# 方法1
[_ for _ in a.keys() if _ in b.keys()]
['3', '2']
# 更好的方法
c = set(a).intersection(set(b))
list(c)
['3', '2']
# 或者
[_ for _ in a if _ in b]
['3', '2']
设置默认值
# 直观但不推荐
d = {}
key = "foo"
if key not in d:
d[key] = []
# 使用 d.setdefault(key[, default])
d = {}
key = "foo"
d.setdefault(key, [])
[]
d[key] = 'bar'
d
{'foo': 'bar'}
# 使用 collections.defaultdict
from collections import defaultdict
d = defaultdict(list)
d["key"]
[]
d["foo"]
[]
d["foo"].append("bar")
d
defaultdict(<class 'list'>, {'key': [], 'foo': ['bar']})
dict. setdefault(key [,default])如果 key 不在字典中,则返回其默认值。但是,如果键存在于字典中,则函数将返回其值。
d = {}
d.setdefault("key", [])
[]
d["key"] = "bar"
d.setdefault("key", [])
'bar'
更新字典
a = {"1":1, "2":2, "3":3}
b = {"2":2, "3":3, "4":4}
a.update(b)
a
{'1': 1, '3': 3, '2': 2, '4': 4}
合并两个字典
Python 3.4 或更低版本。
a = {"x": 55, "y": 66}
b = {"a": "foo", "b": "bar"}
c = a.copy()
c.update(b)
c
{'y': 66, 'x': 55, 'b': 'bar', 'a': 'foo'}
Python 3.5 或更高版本可以更简洁的写法。
a = {"x": 55, "y": 66}
b = {"a": "foo", "b": "bar"}
c = {**a, **b}
c
{'x': 55, 'y': 66, 'a': 'foo', 'b': 'bar'}
字典遍历
遍历所有键
可以使用字典的keys()方法来获取字典中所有的键,然后通过循环遍历这些键。
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict.keys():
print(key)
a
b
c
在 Python 中,直接对字典进行循环遍历(如for key in my_dict:),默认遍历的是字典的键。所以上面的代码可以简化为
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict:
print(key)
这种遍历方式在只需要字典的键,而不需要对应的值时比较有用。例如,要检查字典中是否包含某些特定的键。
遍历所有值
使用values()方法可以获取字典中所有的值,并进行遍历。
my_dict = {'a': 1, 'b': 2, 'c': 3}
for value in my_dict.values():
print(value)
1
2
3
遍历所有键值对
通过items()方法可以同时获取字典的键和值,它返回一个包含键值对的可迭代对象,其中每个元素是一个元组(键,值)。
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
print(key, value)
a 1
b 2
c 3
或者通过遍历键,再通过获取对应的键的值。注意dict.get()和dict['key']的方式都可以,区别是get()方法当键不存在时,可以给默认值,dict[‘key’]的方式会报错。
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict.keys():
print(key,my_dict.get(key,'默认值'))
a 1
b 2
c 3
# 或者
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict.keys():
print(key,my_dict[key])
以上遍历方式在需要同时访问键和值的情况下非常有用,比如更新字典中的值或者将字典中的数据存储到其他数据结构中。
猜你喜欢
- 2025-01-07 Python从入门到放弃-详解列表、元组和字典
- 2025-01-07 python 中字典如何进行复制
- 2025-01-07 python入门023:字典嵌套
- 2025-01-07 掌握Python字典的12个例子
- 2025-01-07 使用Python 获取多级字典(Json)格式所有Key、Value
- 2025-01-07 简单学Python——字典的操作1(增加、更改和删除字典元素)
- 2025-01-07 Python之容器拾遗:Python就是包裹在一堆语法糖中的字典
- 2025-01-07 深入了解python字典的有序特性
- 2025-01-07 如何在 Python 中以列表形式返回字典的键
- 2025-01-07 解锁Python字典合并:多种方法解析
- 01-09Oracle数据库面试题汇总
- 01-09Oracle AWR解析-Report Summary
- 01-09想要成为数据分析师,这些Excel必备知识点你得掌握
- 01-09java开发中常用Oracle函数实例总结比较,当真不少
- 01-09DriveWorks其实是这么回事
- 01-09EXCEL做数据分析,学会这些就入门了
- 01-09一场pandas与SQL的巅峰大战(六)
- 01-09Oracle数据库知识 day01 Oracle介绍和增删改查
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)