Python – 字典中的键值列表配对
有时,在使用Python字典时,我们可能会遇到需要将所有键与所有值配对以形成具有所有可能配对的字典的问题。这可以在包括日间编程在内的许多领域中得到应用。让我们讨论可以执行此任务的某些方式。
方法#1:使用列表推导
可以使用此方法执行此任务。在此我们手动提取每个键,然后使用它们的所有值进行迭代以形成新的字典列表。这具有仅适用于某些键的缺点。
# Python3 code to demonstrate working of
# Key Value list pairings in Dictionary
# Using list comprehension
# initializing dictionary
test_dict = {'gfg' : [7, 8],
'best' : [10, 11, 7]}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Key Value list pairings in Dictionary
# Using list comprehension
res = [{'gfg': i, 'best': j} for i in test_dict['gfg']
for j in test_dict['best']]
# printing result
print("All key value paired List : " + str(res))
The original dictionary is : {‘gfg’: [7, 8], ‘best’: [10, 11, 7]}
All key value paired List : [{‘gfg’: 7, ‘best’: 10}, {‘gfg’: 7, ‘best’: 11}, {‘gfg’: 7, ‘best’: 7}, {‘gfg’: 8, ‘best’: 10}, {‘gfg’: 8, ‘best’: 11}, {‘gfg’: 8, ‘best’: 7}]
方法 #2:使用dict() + zip() + product()
上述方法的组合也可用于执行此任务。在这种情况下,组合的形成是使用 product() 完成的,而值的链接是使用 zip() 完成的。
# Python3 code to demonstrate working of
# Key Value list pairings in Dictionary
# Using dict() + zip() + product()
from itertools import product
# initializing dictionary
test_dict = {'gfg' : [7, 8],
'best' : [10, 11, 7]}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Key Value list pairings in Dictionary
# Using dict() + zip() + product()
res = [dict(zip(test_dict, sub)) for sub in product(*test_dict.values())]
# printing result
print("All key value paired List : " + str(res))
The original dictionary is : {‘gfg’: [7, 8], ‘best’: [10, 11, 7]}
All key value paired List : [{‘gfg’: 7, ‘best’: 10}, {‘gfg’: 7, ‘best’: 11}, {‘gfg’: 7, ‘best’: 7}, {‘gfg’: 8, ‘best’: 10}, {‘gfg’: 8, ‘best’: 11}, {‘gfg’: 8, ‘best’: 7}]