我在尝试从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: {''}}
我确实看到了所有输入,他们只是继续在字典中前进。
答案 0 :(得分:2)
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'}}
答案 1 :(得分:0)
希望这能解决您的问题。
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)