从两个列表和一个范围的字典?

2024-10-08 18:24:14 发布

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

我在尝试从两个列表创建词典时遇到了一些问题。你知道吗

我想把它作为输出。你知道吗

{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: {''}}

我确实看到了所有的输入,它们只是在字典里继续前进。你知道吗


Tags: 代码inforcolumnrootgridrowentry
2条回答

希望这能解决你的问题。你知道吗

    d = {}
    names=['name1','name2','name3','name4','name5']
    age=[1,2,3,4,5]
    for i in range(1,6):
        d[str(i)]={}
        d[str(i)][names[i-1]]=age[i-1]
    print(d)

尝试通过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用户很难理解list和dict语法,因此,如果您更喜欢将其视为循环,这可以实现同样的效果:

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'}}

相关问题 更多 >

    热门问题