在 Python 中打印字典的特定键值对

目录

Print specific key-value pairs of a dictionary in Python

  1. 在 Python 中打印字典的特定键值对
  2. 打印时格式化键值对
  3. 打印字典的前 N ​​个键值对
  4. 打印字典的最后 N 个键值对
  5. 使用切片仅打印字典的一部分
  6. 通过排除键只打印字典的一部分
  7. 使用 itertools.islice() 对字典进行切片

在 Python 中打印字典的特定键值对

要打印字典的特定键值对:

  1. 使用该dict.items()方法获取字典项目的视图。
  2. 使用for循环遍历视图。
  3. 检查每个值是否满足条件。
  4. 使用该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
当使用括号表示法访问不存在的字典键时,会引发 a 。 KeyError

另一方面,默认情况下,该dict.get()方法
为不存在的键
返回 None 。

如果键在字典中,则 dict.get 方法返回给定键的值,否则返回默认

该方法采用以下 2 个参数:

姓名 描述
钥匙 返回值的键
默认 如果字典中不存在提供的键,则返回默认值(可选)

default如果未提供参数值,则默认为None,因此该get()方法永远不会引发KeyError.

打印字典的前N个键值对

打印字典的前 N ​​个键值对:

  1. 使用该dict.items()方法获取字典项目的视图。
  2. 使用该类list()将视图转换为列表。
  3. 使用列表切片获取前 N 个键值对。
  4. 使用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索引是排他的(最多,但不包括)。

Python 索引是从零开始的,因此列表中的第一项的索引为,最后一项的索引为 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]返回倒数第二项。

使用切片只打印字典的一部分

只打印字典的一部分:

  1. 使用该dict.items()方法获取字典项目的视图。
  2. 将视图转换为列表并使用列表切片来获取字典的一部分。
  3. 使用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,最后一项的索引为-1len(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() 对字典进行切片

这是一个三步过程:

  1. 使用该dict.items()方法获取字典项目的视图。
  2. 使用该itertools.islice()方法获取视图对象的一部分。
  3. 使用该类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).

main.py
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.

The method makes an iterator that returns the selected elements from the iterable.
main.py
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 start index is inclusive and the stop index is exclusive (up to, but not including).

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.

我还写了一篇关于
如何以表格格式打印字典的文章。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: