在 Python 中通过部分键匹配查找字典项

目录

Find dictionary items whose key matches Substring in Python

  1. 在 Python 中查找其键与 Substring 匹配的字典项
  2. 使用以给定字符串开头的键访问字典值

在 Python 中查找键匹配 Substring 的字典项

要查找键与子字符串匹配的字典项:

  1. 使用列表理解来迭代字典的项目。
  2. 检查子字符串是否包含在每个键中。
  3. 新列表将只包含匹配键的值。
主程序
my_dict = { 'First_Name': 'Bobby', 'Last_Name': 'Hadz', 'language': 'Python' } partial_key = 'name' matching_values = [ value for key, value in my_dict.items() if partial_key.lower() in key.lower() ] print(matching_values) # 👉️ ['Bobby', 'Hadz']

dict.items
方法返回字典项((键,值)对)的新视图

主程序
my_dict = { 'First_Names': 'Bobby', 'Last_Names': 'Hadz', 'language': 'Python' } # 👇️ dict_items([('First_Name', 'Bobby'), # ('Last_Name', 'Hadz'), ('language', 'Python')]) print(my_dict.items())

我们使用
列表理解来迭代字典的项目。

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。

在每次迭代中,我们检查子字符串是否包含在当前键中。

主程序
my_dict = { 'First_Name': 'Bobby', 'Last_Name': 'Hadz', 'language': 'Python' } partial_key = 'name' matching_values = [ value for key, value in my_dict.items() if partial_key.lower() in key.lower() ] print(matching_values) # 👉️ ['Bobby', 'Hadz']

如果满足条件,我们返回相应的值。

新列表仅包含匹配键的值。

我们使用该str.lower()方法将子字符串和键转换为小写以测试忽略大小写的成员资格。

将两个字符串都转换为小写或大写允许进行不区分大小写的字符串比较。

in 运算符测试成员资格。例如,如果是 的成员
,则
x in s计算为,否则计算为TruexsFalse

获取包含匹配键值对的字典

如果您需要获取包含匹配项的字典,请使用字典理解。

主程序
my_dict = { 'First_Name': 'Bobby', 'Last_Name': 'Hadz', 'language': 'Python' } partial_key = 'name' matching_items = { key: value for key, value in my_dict.items() if partial_key.lower() in key.lower() } # 👇️ {'First_Name': 'Bobby', 'Last_Names': 'Hadz'} print(matching_items)

字典理解与列表理解非常相似。

他们对字典中的每个键值对执行一些操作,或者选择满足条件的键值对的子集。

新字典仅包含其键与指定子字符串匹配的项。

获取其键包含给定字符串的第一个字典值

如果您只需要其键包含给定字符串的第一个字典值,请使用该next()函数。

主程序
my_dict = { 'First_name': 'Bobby', 'Last_name': 'Hadz', 'language': 'Python' } partial_key = 'name' first_match = next( (value for key, value in my_dict.items() if partial_key.lower() in key.lower()), None ) print(first_match) # 👉️ Bobby

当我们将迭代器传递给next()函数时,将返回流中的下一个项目。

我们指定了一个默认值,None如果字典中的键都不包含给定的字符串,则使用该默认值。

使用 filter() 查找键匹配 Substring 的字典项

您还可以使用该filter()函数来查找其键与给定子字符串匹配的字典项。

主程序
my_dict = { 'First_Name': 'Bobby', 'Last_Name': 'Hadz', 'language': 'Python' } partial_key = 'name' matching_values = dict( filter( lambda item: partial_key.lower() in item[0].lower(), my_dict.items() ) ) # 👇️ {'First_Name': 'Bobby', 'Last_Name': 'Hadz'} print(matching_values)

filter函数接受一个函数和一个可迭代对象作为参数,并从可迭代对象的元素构造一个迭代器,函数返回一个真值。

我们传递给的 lambda 函数filter被字典的每个键值对调用。

该函数检查子字符串是否包含在键中,如果满足条件,则返回匹配的键值对。

使用以给定字符串开头的键访问字典值

要使用以给定字符串开头的键访问字典值:

  1. 使用列表理解来迭代字典的项目。
  2. 检查每个键是否以给定的字符串开头。
  3. 新列表将只包含匹配键的值。
主程序
my_dict = { 'name_first': 'Bobby', 'name_last': 'Hadz', 'language': 'Python' } key_prefix = 'name' matching_values = [ value for key, value in my_dict.items() if key.lower().startswith(key_prefix.lower()) ] print(matching_values) # 👉️ ['Bobby', 'Hadz']

dict.items
方法返回字典项((键,值)对)的新视图

主程序
my_dict = { 'name_first': 'Bobby', 'name_last': 'Hadz', 'language': 'Python' } # 👇️ dict_items([('name_first', 'Bobby'), ('name_last', 'Hadz'), ('language', 'Python')]) print(my_dict.items())

我们使用列表理解来迭代字典的项目。

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。

在每次迭代中,我们使用该str.startswith()方法检查当前键是否以给定字符串开头。

主程序
my_dict = { 'name_first': 'Bobby', 'name_last': 'Hadz', 'language': 'Python' } key_prefix = 'name' matching_values = [ value for key, value in my_dict.items() if key.lower().startswith(key_prefix.lower()) ] print(matching_values) # 👉️ ['Bobby', 'Hadz']

如果字符串以提供的前缀开头,则 str.startswith 方法返回,否则

方法
返回TrueFalse

我们还使用该str.lower()方法执行不区分大小写的比较。

获取其键以给定前缀开头的第一个值

如果您只需要获取字典中键以给定前缀开头的第一个值,请使用该next()函数。

主程序
my_dict = { 'name_first': 'Bobby', 'name_last': 'Hadz', 'language': 'Python' } partial_key = 'name' value = next( (value for key, value in my_dict.items() if key.lower().startswith(partial_key.lower())), None ) print(value) # 👉️ Bobby



当我们将迭代器传递给next()函数时,将返回流中的下一个项目。

我们指定了一个默认值,None如果字典中没有任何键以给定的字符串开头,则使用该默认值。

额外资源

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