Python 从2个列表和一个范围中选择词典?

Python 从2个列表和一个范围中选择词典?,python,Python,我在尝试从2个列表创建字典时遇到一些问题 我想把它作为输出 {1: {'name1', 'age1'}, 2: {'name2', 'age2'}, 3: {'name3', 'age3'}} 我目前的代码:(我对编码还不熟悉,所以这是一个混乱且非常高效的过程,是的,我确实意识到我正在运行低于5次的所有代码) 输出持续向前推动var1和var2,导致以下输出: {1: {''}, 2: {''}, 3: {''}, 4: {''}} 我确实看到了所有的输入,它们只是在字典中不断前进 尝试通过

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

我想把它作为输出

{1: {'name1', 'age1'}, 2: {'name2', 'age2'}, 3: {'name3', 'age3'}}
我目前的代码:(我对编码还不熟悉,所以这是一个混乱且非常高效的过程,是的,我确实意识到我正在运行低于5次的所有代码)

输出持续向前推动var1和var2,导致以下输出:

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

我确实看到了所有的输入,它们只是在字典中不断前进

尝试通过以下方式创建词典:

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

希望这能解决你的问题

    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)

我有点困惑。为什么不简单地{var1,var2}
{var1.get(),var2.get()}
创建一个集合而不是一个字典呢?因为它们是StringVar(),如果我不使用.get(),它就不起作用。@juanpa.arrivillaga我怎么能把它变成一个字典呢?
{x:y}
不是
{x,y}
,但是看起来好像有bug,因为你的
varx.get()
始终返回空字符串…非常感谢:)。一天后,它终于开始工作了。
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'}}
    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)