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