Python 为元组项分配键

Python 为元组项分配键,python,Python,这是我的代码示例。现在我想把元组的每个值映射到id或name。 所以我可以得到如下结果: l1 = [1, 2, 3] l2 = ['foo', 'bar', 'test'] z1 = zip(l1,l2) list(z1) [(1, 'foo'), (2, 'bar'), (3, 'test')] 我所做的是: [('id':1, 'name':'foo'), ('id':2, 'name':'bar'), ('id':3, 'name':'test')] 但第一)它不起作用,第二)据

这是我的代码示例。现在我想把元组的每个值映射到id或name。 所以我可以得到如下结果:

l1 = [1, 2, 3]
l2 = ['foo', 'bar', 'test']


z1 = zip(l1,l2)
list(z1)
[(1, 'foo'), (2, 'bar'), (3, 'test')]
我所做的是:

[('id':1, 'name':'foo'), ('id':2, 'name':'bar'), ('id':3, 'name':'test')]
但第一)它不起作用,第二)据我所知,根本不是蟒蛇式的

我不明白为什么上面的循环不起作用。如果我这样做:

>>> result = []
>>> for i in zip(l1,l2):
...     d['id'] = i[0]
...     d['name'] = i[1]
...     result.append(d)
>>> result
[{'id': 3, 'name': 'test'}, {'id': 3, 'name': 'test'}, {'id': 3, 'name': 'test'}]

它会毫无问题地迭代每一项,我在列表中使用的append()不会引起任何问题…

您可以使用dict理解为循环pythonical编写它:

>>> for i in zip(l1,l2):
...     print(i[0], i[1])
... 
1 foo
2 bar
3 test

根据这个DICT实际上是多么复杂,以及你想用它来做什么,你可能想考虑使用一个简单的类来代替。

< P>你可以用DICT理解写循环for:y/p>
>>> for i in zip(l1,l2):
...     print(i[0], i[1])
... 
1 foo
2 bar
3 test

根据这个DICT实际上是多么复杂,以及你想用它来做什么,你可能想考虑使用一个简单的类来代替。

< P>你可以用DICT理解写循环for:y/p>
>>> for i in zip(l1,l2):
...     print(i[0], i[1])
... 
1 foo
2 bar
3 test

根据这个DICT实际上是多么复杂,以及你想用它来做什么,你可能想考虑使用一个简单的类来代替。

< P>你可以用DICT理解写循环for:y/p>
>>> for i in zip(l1,l2):
...     print(i[0], i[1])
... 
1 foo
2 bar
3 test

根据这个DICT实际上是多么复杂,以及你想用它做什么,你可能想考虑使用一个简单的类。

ID >代码> d < /Cord>是你的字典,你正在替换字典(代码>代码> d>代码>的键(<代码> ID <代码> >代码>名称>代码>的值,然后将其附加到列表中。

要创建字典列表,可以使用如下列表:

[{'id': id, 'name': name} for id,name in zip(l1, l2)]

Id
d
是您的字典您正在做的是替换字典
d
的键(
Id
&
name
)的值,并将其添加到列表中

要创建字典列表,可以使用如下列表:

[{'id': id, 'name': name} for id,name in zip(l1, l2)]

Id
d
是您的字典您正在做的是替换字典
d
的键(
Id
&
name
)的值,并将其添加到列表中

要创建字典列表,可以使用如下列表:

[{'id': id, 'name': name} for id,name in zip(l1, l2)]

Id
d
是您的字典您正在做的是替换字典
d
的键(
Id
&
name
)的值,并将其添加到列表中

要创建字典列表,可以使用如下列表:

[{'id': id, 'name': name} for id,name in zip(l1, l2)]

您的解决方案不起作用,因为您正在每一步“覆盖”dict:

l1 = [1, 2, 3]
l2 = ['foo', 'bar', 'test']
result = [{'id': i[0], 'name':i[1]} for i in zip(l1,l2)]
一种方法是在每个步骤开始时“重置”dict:

>>> for i in zip(l1,l2):
...   d['id']=i[0]
...   d['name']=i[1]
...   r.append(d)
...   print r
...
[{'id': 1, 'name': 'foo'}]
[{'id': 2, 'name': 'bar'}, {'id': 2, 'name': 'bar'}]
[{'id': 3, 'name': 'test'}, {'id': 3, 'name': 'test'}, {'id': 3, 'name': 'test'}]
但正如其他人指出的,
[{'id':id,'name':name}对于id,zip中的name(l1,l2)]
更像python

我不知道你是否可以使用它,但你可以用你的拉链制作你的dict:

>>> for i in zip(l1,l2):
...   d={}
...   d['id']=i[0]
...   d['name']=i[1]
...   r.append(d)
...   print r
...
[{'id': 1, 'name': 'foo'}]
[{'id': 1, 'name': 'foo'}, {'id': 2, 'name': 'bar'}]
[{'id': 1, 'name': 'foo'}, {'id': 2, 'name': 'bar'}, {'id': 3, 'name': 'test'}]

您的解决方案不起作用,因为您正在每一步“覆盖”dict:

l1 = [1, 2, 3]
l2 = ['foo', 'bar', 'test']
result = [{'id': i[0], 'name':i[1]} for i in zip(l1,l2)]
一种方法是在每个步骤开始时“重置”dict:

>>> for i in zip(l1,l2):
...   d['id']=i[0]
...   d['name']=i[1]
...   r.append(d)
...   print r
...
[{'id': 1, 'name': 'foo'}]
[{'id': 2, 'name': 'bar'}, {'id': 2, 'name': 'bar'}]
[{'id': 3, 'name': 'test'}, {'id': 3, 'name': 'test'}, {'id': 3, 'name': 'test'}]
但正如其他人指出的,
[{'id':id,'name':name}对于id,zip中的name(l1,l2)]
更像python

我不知道你是否可以使用它,但你可以用你的拉链制作你的dict:

>>> for i in zip(l1,l2):
...   d={}
...   d['id']=i[0]
...   d['name']=i[1]
...   r.append(d)
...   print r
...
[{'id': 1, 'name': 'foo'}]
[{'id': 1, 'name': 'foo'}, {'id': 2, 'name': 'bar'}]
[{'id': 1, 'name': 'foo'}, {'id': 2, 'name': 'bar'}, {'id': 3, 'name': 'test'}]

您的解决方案不起作用,因为您正在每一步“覆盖”dict:

l1 = [1, 2, 3]
l2 = ['foo', 'bar', 'test']
result = [{'id': i[0], 'name':i[1]} for i in zip(l1,l2)]
一种方法是在每个步骤开始时“重置”dict:

>>> for i in zip(l1,l2):
...   d['id']=i[0]
...   d['name']=i[1]
...   r.append(d)
...   print r
...
[{'id': 1, 'name': 'foo'}]
[{'id': 2, 'name': 'bar'}, {'id': 2, 'name': 'bar'}]
[{'id': 3, 'name': 'test'}, {'id': 3, 'name': 'test'}, {'id': 3, 'name': 'test'}]
但正如其他人指出的,
[{'id':id,'name':name}对于id,zip中的name(l1,l2)]
更像python

我不知道你是否可以使用它,但你可以用你的拉链制作你的dict:

>>> for i in zip(l1,l2):
...   d={}
...   d['id']=i[0]
...   d['name']=i[1]
...   r.append(d)
...   print r
...
[{'id': 1, 'name': 'foo'}]
[{'id': 1, 'name': 'foo'}, {'id': 2, 'name': 'bar'}]
[{'id': 1, 'name': 'foo'}, {'id': 2, 'name': 'bar'}, {'id': 3, 'name': 'test'}]

您的解决方案不起作用,因为您正在每一步“覆盖”dict:

l1 = [1, 2, 3]
l2 = ['foo', 'bar', 'test']
result = [{'id': i[0], 'name':i[1]} for i in zip(l1,l2)]
一种方法是在每个步骤开始时“重置”dict:

>>> for i in zip(l1,l2):
...   d['id']=i[0]
...   d['name']=i[1]
...   r.append(d)
...   print r
...
[{'id': 1, 'name': 'foo'}]
[{'id': 2, 'name': 'bar'}, {'id': 2, 'name': 'bar'}]
[{'id': 3, 'name': 'test'}, {'id': 3, 'name': 'test'}, {'id': 3, 'name': 'test'}]
但正如其他人指出的,
[{'id':id,'name':name}对于id,zip中的name(l1,l2)]
更像python

我不知道你是否可以使用它,但你可以用你的拉链制作你的dict:

>>> for i in zip(l1,l2):
...   d={}
...   d['id']=i[0]
...   d['name']=i[1]
...   r.append(d)
...   print r
...
[{'id': 1, 'name': 'foo'}]
[{'id': 1, 'name': 'foo'}, {'id': 2, 'name': 'bar'}]
[{'id': 1, 'name': 'foo'}, {'id': 2, 'name': 'bar'}, {'id': 3, 'name': 'test'}]
对于附加副本,请看这个SO。对于附加副本,请看这个SO。对于附加副本,请看这个SO。对于附加副本,请看这个SO。