首页 > 解决方案 > 从 Python 中的键列表和值的多列表创建字典

问题描述

我有一个密钥列表:

list_date = ["MON", "TUE", "WED", "THU","FRI"]

我有许多由以下代码创建的值列表:

list_value = list()
for i in list(range(5, 70, 14)):
    list_value.append(list(range(i, i+10, 3)))

规则创建:

我希望获得这样的字典:

collections = {"MON":[5, 8, 11, 14], "TUE" :[19, 22, 25, 28], "WED":[33, 36, 39, 42], "THU":[47, 50, 53, 56], "FRI":[61, 64, 67, 70]}

然后,我使用了:

zip_iterator = zip(list_date, list_value)
collections = dict(zip_iterator)

得到我预期的结果。

我尝试了另一种方式,比如使用lambda函数

for i in list(range(5, 70, 14)):
    list_value.append(list(range(i,i+10,3)))
    couple_start_end[lambda x: x in list_date] = list(range(i, i + 10, 3))

输出是:

{<function <lambda> at 0x000001BF7F0711F0>: [5, 8, 11, 14], <function <lambda> at 0x000001BF7F071310>: [19, 22, 25, 28], <function <lambda> at 0x000001BF7F071280>: [33, 36, 39, 42], <function <lambda> at 0x000001BF7F0710D0>: [47, 50, 53, 56], <function <lambda> at 0x000001BF7F0890D0>: [61, 64, 67, 70]}

我想问有没有更好的解决方案来创建具有上述规则的值列表?collections并在不使用该方法的情况下创建字典zip

非常感谢您的关注和参与。

标签: pythonlistdictionary

解决方案


当然,您可以使用enumerate,但我不会说它比zip基于解决方案的解决方案更好或更差:

collections = {}
for idx, key in enumerate(list_keys):
    collections[key] = list_value[idx]
print(collections)

输出:

{'MON': [5, 8, 11, 14], 'TUE': [19, 22, 25, 28], 'WED': [33, 36, 39, 42], 'THU': [47, 50, 53, 56], 'FRI': [61, 64, 67, 70]}

此外,您不需要单独创建值列表,您可以随时创建字典:

list_keys = ["MON", "TUE", "WED", "THU","FRI"]
collections = {}
for idx, start in enumerate(range(5, 70, 14)):
    collections[list_keys[idx]] = [i for i in range(start, start+10, 3)]
print(collections)

推荐阅读