📜  Python - 与字典中的值列表关联的键

📅  最后修改于: 2022-05-13 01:54:59.489000             🧑  作者: Mango

Python - 与字典中的值列表关联的键

有时,在使用Python字典时,我们可能会遇到需要在值列表中找到特定值的键的问题。这个问题很普遍,可以在许多领域都有应用。让我们讨论可以执行此任务的某些方式。

方法 #1:使用循环 + items()
上述功能的组合可以用来解决这个问题。在此,我们使用 items() 提取字典的所有元素,并使用循环来编译其余逻辑。

# Python3 code to demonstrate working of 
# Value's Key association
# Using loop + items()
  
# initializing dictionary
test_dict = {'gfg' : [4, 5], 'is' : [8], 'best' : [10, 12]}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# initializing value list 
val_list = [5, 10]
  
# Value's Key association
# Using loop + items()
temp = {}
for key, vals in test_dict.items():
    for val in vals:
        temp[val] = key
res = [temp[ele] for ele in val_list]
  
# printing result 
print("The keys mapped to " + str(val_list) + " are : " + str(res)) 
输出:
The original dictionary : {'gfg': [4, 5], 'best': [10, 12], 'is': [8]}
The keys mapped to [5, 10] are : ['gfg', 'best']

方法 #2:使用列表理解 + any()
这是可以执行此任务的另一种方式。它提供了可用于解决此问题的速记。在此,我们使用 any() 来计算 key 是否包含 value 列表中的任何值。

# Python3 code to demonstrate working of 
# Value's Key association
# Using list comprehension + any()
  
# initializing dictionary
test_dict = {'gfg' : [4, 5], 'is' : [8], 'best' : [10, 12]}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# initializing value list 
val_list = [5, 10]
  
# Value's Key association
# Using list comprehension + any()
res = [key for key, val in test_dict.items() if any(y in val for y in val_list)]
  
# printing result 
print("The keys mapped to " + str(val_list) + " are : " + str(res)) 
输出:
The original dictionary : {'gfg': [4, 5], 'is': [8], 'best': [10, 12]}
The keys mapped to [5, 10] are : ['gfg', 'best']