目录
Print specific key-value pairs of a dictionary in Python
- 在 Python 中打印字典的特定键值对
- 打印时格式化键值对
- 打印字典的前 N 个键值对
- 打印字典的最后 N 个键值对
- 使用切片仅打印字典的一部分
- 通过排除键只打印字典的一部分
- 使用 itertools.islice() 对字典进行切片
在 Python 中打印字典的特定键值对
要打印字典的特定键值对:
- 使用该
dict.items()
方法获取字典项目的视图。 - 使用
for
循环遍历视图。 - 检查每个值是否满足条件。
- 使用该
print()
函数打印匹配的键值对。
my_dict = { 'name': 'Borislav Hadzhiev', 'fruit': 'apple', 'number': 5, 'website': 'bobbyhadz.com', 'topic': 'Python' } # ✅ Print key-value pairs of dict that meet a condition for key, value in my_dict.items(): if str(value).startswith('bo'): print(key, value) # 👉️ website bobbyhadz.com
dict.items
方法返回字典项((键,值)对)的新视图。
my_dict = {'id': 1, 'name': 'BobbyHadz'} print(my_dict.items()) # 👉️ dict_items([('id', 1), ('name', 'BobbyHadz')])
如果您只需要打印字典中满足条件的键值对,请使用 for循环遍历字典的项目。
bo
打印时格式化键值对
如果您需要以任何方式格式化键值对,则可以使用
格式化字符串文字。
my_dict = { 'name': 'Borislav Hadzhiev', 'fruit': 'apple', 'number': 5, 'website': 'bobbyhadz.com', 'topic': 'Python' } for key, value in my_dict.items(): if str(value).startswith('bo'): # 👇️ Key: website, Value: bobbyhadz.com print(f'Key: {key}, Value: {value}')
格式化字符串文字 (f-strings) 让我们通过在字符串前加上f
.
var1 = 'bobby' var2 = 'hadz' result = f'{var1}{var2}' print(result) # 👉️ bobbyhadz
确保将表达式括在大括号 – 中{expression}
。
如果您需要打印单个键值对,请使用括号表示法或方法
dict.get()
。
my_dict = { 'name': 'Borislav Hadzhiev', 'fruit': 'apple', 'number': 5, 'website': 'bobbyhadz.com', 'topic': 'Python' } print(my_dict['name']) # 👉️ Borislav Hadzhiev print(my_dict.get('name')) # 👉️ Borislav Hadzhiev
KeyError
另一方面,默认情况下,该dict.get()
方法
会为不存在的键返回 None 。
如果键在字典中,则 dict.get 方法返回给定键的值,否则返回默认值。
该方法采用以下 2 个参数:
姓名 | 描述 |
---|---|
钥匙 | 返回值的键 |
默认 | 如果字典中不存在提供的键,则返回默认值(可选) |
default
如果未提供参数值,则默认为None
,因此该get()
方法永远不会引发KeyError
.
打印字典的前N个键值对
打印字典的前 N 个键值对:
- 使用该
dict.items()
方法获取字典项目的视图。 - 使用该类
list()
将视图转换为列表。 - 使用列表切片获取前 N 个键值对。
- 使用
print()
函数打印结果。
my_dict = { 'name': 'Borislav Hadzhiev', 'fruit': 'apple', 'number': 5, 'website': 'bobbyhadz.com', 'topic': 'Python' } firstN = list(my_dict.items())[:2] # 👇️ [('name', 'Borislav Hadzhiev'), ('fruit', 'apple')] print(firstN) for key, value in firstN: # name Borislav Hadzhiev # fruit apple print(key, value)
我们使用list()类将字典的项目转换为列表,并使用
列表切片来选择前 N 个键值对。
列表切片的语法是my_list[start:stop:step]
.
索引start
是包含的,stop
索引是排他的(最多,但不包括)。
0
-1
len(my_list) - 1
打印字典的最后 N 个键值对
您可以使用相同的方法打印字典的最后 N 个键值对。
my_dict = { 'name': 'Borislav Hadzhiev', 'fruit': 'apple', 'number': 5, 'website': 'bobbyhadz.com', 'topic': 'Python' } lastN = list(my_dict.items())[-2:] print(lastN) # 👉️ [('website', 'bobbyhadz.com'), ('topic', 'Python')] for key, value in lastN: # website bobbyhadz.com # topic Python print(key, value)
负索引可用于向后计数,例如my_list[-1]
返回列表中的最后一项并my_list[-2]
返回倒数第二项。
使用切片只打印字典的一部分
只打印字典的一部分:
- 使用该
dict.items()
方法获取字典项目的视图。 - 将视图转换为列表并使用列表切片来获取字典的一部分。
- 使用
print()
函数打印结果。
my_dict = { 'id': 1, 'age': 30, 'salary': 100, 'name': 'bobbyhadz', 'language': 'Python' } result = dict(list(my_dict.items())[0:3]) print(result) # 👉️ {'id': 1, 'age': 30, 'salary': 100}
dict.items
方法返回字典项((键,值)对)的新视图。
my_dict = {'id': 1, 'name': 'BobbyHadz'} print(my_dict.items()) # 👉️ dict_items([('id', 1), ('name', 'BobbyHadz')])
list()
将视图对象转换为列表,并使用列表切片来选择字典中的前 3 个项目。列表切片的语法是my_list[start:stop:step]
.
索引start
是包含的,stop
索引是排他的(最多,但不包括)。
Python 索引是从零开始的,因此列表中的第一项的索引为0
,最后一项的索引为-1
或len(my_list) - 1
。
通过排除键只打印字典的一部分
如果您需要从字典中排除某些键并打印结果,请使用dict comprehension。
my_dict = { 'id': 1, 'age': 30, 'salary': 100, 'name': 'bobbyhadz', 'language': 'Python' } def exclude_keys(dictionary, keys): return { key: value for key, value in dictionary.items() if key not in keys } result = exclude_keys(my_dict, ['id', 'age']) # 👇️ {'salary': 100, 'name': 'bobbyhadz', 'language': 'Python'} print(result)
我们使用字典理解来遍历字典的项目并排除指定的键。
Dict comprehensions 与list comprehensions非常相似
。
使用 itertools.islice() 对字典进行切片
这是一个三步过程:
- 使用该
dict.items()
方法获取字典项目的视图。 - 使用该
itertools.islice()
方法获取视图对象的一部分。 - 使用该类
dict()
将切片转换为字典。
from itertools import islice a_dict = { 'id': 1, 'first': 'bobby', 'last': 'hadz', 'site': 'bobbyhadz.com', 'topic': 'python' } # ✅ slice dictionary based on index new_dict = dict(islice(a_dict.items(), 2)) print(new_dict) # 👉️ {'id': 1, 'first': 'bobby'} new_dict = dict(islice(a_dict.items(), 2, 4)) print(new_dict) # 👉️ {'last': 'hadz', 'site': 'bobbyhadz.com'}
The first example uses the itertools.islice()
method to slice a dictionary.
The dict.items
method returns a new view of the dictionary’s items ((key, value) pairs).
a_dict = { 'id': 1, 'first': 'bobby', 'last': 'hadz', 'site': 'bobbyhadz.com', 'topic': 'python' } # 👇️ dict_items([('id', 1), ('first', 'bobby'), ('last', 'hadz'), ('site', 'bobbyhadz.com'), ('topic', 'python')]) print(a_dict.items())
The itertools.islice method
takes an iterator and optional start
and stop
indices.
from itertools import islice a_dict = { 'id': 1, 'first': 'bobby', 'last': 'hadz', 'site': 'bobbyhadz.com', 'topic': 'python' } new_dict = dict(islice(a_dict.items(), 2)) print(new_dict) # 👉️ {'id': 1, 'first': 'bobby'} new_dict = dict(islice(a_dict.items(), 2, 4)) print(new_dict) # 👉️ {'last': 'hadz', 'site': 'bobbyhadz.com'}
Dictionaries preserve the insertion order of keys starting with Python v3.7.
We used a start index of 2
and a stop index of 4
.
The last step is to pass the slice to the dict()
class.
The dict() class can be passed
an iterable of key-value pairs and returns a new dictionary.
我还写了一篇关于
如何以表格格式打印字典的文章。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: