gpt4 book ai didi

python - 来自 2 个列表和一个范围的字典?

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:43 24 4
gpt4 key购买 nike

我在尝试从 2 个列表创建字典时遇到了一些问题。

我正在尝试将其作为输出。

{1: {'name1', 'age1'}, 2: {'name2', 'age2'}, 3: {'name3', 'age3'}}

我当前的代码:(我是编码新手,所以这是一团糟而且非常高效,是的,我确实意识到我运行的所有代码都在 5 次以下)

def Update():
for r in range(1,5):
v1list.append(StringVar())
v2list.append(StringVar())
NameEntry = Entry(root, textvariable=v1list[r-1]).grid(row = r, column = 0, sticky=W)
AgeEntry = Entry(root, textvariable=v2list[r-1]).grid(row = r, column = 4, sticky=W)
for var1, var2 in ((a,b) for a in v1list for b in v2list):
UserInput[r] = {var1.get(), var2.get()}
print(UserInput)

输出不断插入 var1 和 var2 向前,导致输出如下:

{1: {''}, 2: {''}, 3: {''}, 4: {''}}

我确实看到了那里的所有输入,它们只是在字典中不断向前移动。

最佳答案

尝试通过 dictionary comprehension 创建字典:

names = ['name1', 'name2', 'name3']
ages = ['age1', 'age2', 'age3']

name_age_dict = {i+1:{names[i],ages[i]} for i in range(len(names))}

>>> name_age_dict
{1: {'age1', 'name1'}, 2: {'name2', 'age2'}, 3: {'age3', 'name3'}}

它比 for 循环更简洁,并且保持可读性。本质上,它遍历列表中的每个项目(假设列表具有相同的长度),并为每个列表中的每个项目创建一个 {name, age} 的字典,分配索引号(+ 1 跳过 0) 作为该字典的键。

一些新的 python 用户对列表和字典的理解语法有困难,所以如果你更喜欢把它看作一个循环,这实现了同样的事情:

name_age_dict = {}

for i in range(len(names)):
name_age_dict[i+1] = {names[i], ages[i]}

>>> name_age_dict
{1: {'age1', 'name1'}, 2: {'name2', 'age2'}, 3: {'age3', 'name3'}}

关于python - 来自 2 个列表和一个范围的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48815134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com