Python 创建包含字典的列表,这些字典的值是从不同的列表中顺序选择的
我试图创建一个字典列表,由相同的键和从不同列表中顺序选择的值组成 这里的解决方案对我没有帮助: , ,Python 创建包含字典的列表,这些字典的值是从不同的列表中顺序选择的,python,python-3.x,Python,Python 3.x,我试图创建一个字典列表,由相同的键和从不同列表中顺序选择的值组成 这里的解决方案对我没有帮助: , , ids=[8,9,10,11,12] 字段=['person'] 容器=[] 我得到的最接近的结果是: 对于ID中的i: append(dict(zip(字段,[i代表id中的i])) 其结果是: [{'person':8},{'person':8},{'person':8},{'person':8},{'person':8}] 我需要的是: [{'person':8},{'perso
ids=[8,9,10,11,12]
字段=['person']
容器=[]
我得到的最接近的结果是:
对于ID中的i:
append(dict(zip(字段,[i代表id中的i]))
其结果是:
[{'person':8},{'person':8},{'person':8},{'person':8},{'person':8}]
我需要的是:
[{'person':8},{'person':9},{'person':10},{'person':11},{'person':12}]
如果字段
只有一个元素,而您已经在做列表理解,那么为什么还要麻烦zip
container = [{field[0]: i} for i in ids]
如果
field
只有一个元素,而您已经在做列表理解,那么为什么还要麻烦使用zip
container = [{field[0]: i} for i in ids]
您已经在使用
for
循环迭代ids
,您也不需要理解列表
而且您不需要zip
。它没有做任何有用的事情,因为它总是在到达最短序列的末尾时停止。由于字段
只有一个元素,因此它只使用[i for i in id]
的第一个元素,这就是为什么总是得到8
for i in ids:
container.append({field[0]: i})
您已经在使用
for
循环迭代ids
,您也不需要理解列表
而且您不需要zip
。它没有做任何有用的事情,因为它总是在到达最短序列的末尾时停止。由于字段
只有一个元素,因此它只使用[i for i in id]
的第一个元素,这就是为什么总是得到8
for i in ids:
container.append({field[0]: i})
如果有一个字段,则可以执行以下操作:
for i in ids:
container.append(dict(zip(field, [i])))
对于多个字段项,可以执行以下操作:
from itertools import product
for i,j in product(ids, field):
container.append(dict(zip([i],[j])))
如果有一个字段,则可以执行以下操作:
for i in ids:
container.append(dict(zip(field, [i])))
对于多个字段项,可以执行以下操作:
from itertools import product
for i,j in product(ids, field):
container.append(dict(zip([i],[j])))
如果id是连续的(您提到了顺序选择的值),您可以使用
范围
,此外,如果字段列表只有一个元素,为什么不直接使用字符串呢
那么这是一个简单的一行
print([{'person': i} for i in range(8, 13)])
#[{'person': 8}, {'person': 9}, {'person': 10}, {'person': 11}, {'person': 12}]
如果列表中有多个元素,则也不需要zip
fields = ['person', 'animal']
print([{item: i} for i in range(8, 13) for item in fields])
#[{'person': 8}, {'animal': 8}, {'person': 9}, {'animal': 9}, {'person': 10}, {'animal': 10}, {'person': 11}, {'animal': 11}, {'person': 12}, {'animal': 12}]
另一种选择是
如果id是连续的(您提到了顺序选择的值),您可以使用
范围
,此外,如果字段列表只有一个元素,为什么不直接使用字符串呢
那么这是一个简单的一行
print([{'person': i} for i in range(8, 13)])
#[{'person': 8}, {'person': 9}, {'person': 10}, {'person': 11}, {'person': 12}]
如果列表中有多个元素,则也不需要zip
fields = ['person', 'animal']
print([{item: i} for i in range(8, 13) for item in fields])
#[{'person': 8}, {'animal': 8}, {'person': 9}, {'animal': 9}, {'person': 10}, {'animal': 10}, {'person': 11}, {'animal': 11}, {'person': 12}, {'animal': 12}]
另一种选择是
如果有多个字段,该怎么办<代码>{person:8'foo:8}或
{person:8}{foo:8}
?如果有多个字段,该怎么办<代码>{'person':8,'foo':8}或{person:8}{foo:8}
?范围(8,14)
上升到13。范围(8,14)
上升到13。