使用相同键但不同值的Python词典

2024-04-20 08:10:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从键和值对创建一个字典。问题是,我有相同的键,但不同的值。所以我的目标是创造

menu = [
    {"viewclass": "MDMenuItem",
     "text" : "option1"},
    {"viewclass": "MDMenuItem",
     "text" : "option2"}
]

我尝试使用for循环创建这个变量

length = 2
menu = {}

view_class_keys = length * ["viewclass"]
view_class_values = length * ["MDMenuItem"]
text_keys = length * ["text"]
text_values = ["option1", "option2"]

for iterator in range(0, length):
    menu[view_class_keys[iterator]] = view_class_values[iterator]
    menu[text_keys[iterator]] = text_values[iterator]

print([menu])

# Output: [{'viewclass': 'MDMenuItem', 'text': 'option2'}]

我知道问题是钥匙是一样的,但我不知道如何解决这个问题。你知道吗


Tags: textview目标for字典keyslengthclass
3条回答

你很接近。你应该把你的词典汇总在清单上 在每次迭代中创建新字典时,将其附加到结果列表中:

length = 2
menu_list = []
view_class_keys = length * ["viewclass"]
view_class_values = length * ["MDMenuItem"]
text_keys = length * ["text"]
text_values = ["option1", "option2"]

for iterator in range(0, length):
    menu = {}
    menu[view_class_keys[iterator]] = view_class_values[iterator]
    menu[text_keys[iterator]] = text_values[iterator]
    menu_list.append(menu)

print(menu_list)

编辑: 假设代码中唯一的变量部分是text_values列表, 您的代码可以简化为

menu = [{"viewclass": "MDMenuItem", "text" : option} for option in text_values]

可能是这样的:

menu = [dict(zip(i[::2], i[1::2])) for i in zip(view_class_keys, view_class_values, text_keys, text_values)]

或:

length = 2
text_values = ["option1", "option2"]
print([dict(viewclass="MDMenuItem", text=option) for option in text_values])

相关问题 更多 >