gpt4 book ai didi

python - 执行嵌套 for 循环以生成字典的更好方法?

转载 作者:太空宇宙 更新时间:2023-11-04 07:18:58 24 4
gpt4 key购买 nike

在 python 中有没有比使用嵌套的 for 循环更好的方法来生成包含列表值的列表字典?

例子:

alphabet = ['a', 'b', 'c', 'd', 'e', 'f', ... ,'z']
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
chars = ["!", "@", "#", "$"]

objects = []
for letter in alphabet:
for number in numbers:
for char in characters:
objects.append({
'letter': letter,
'number': number,
'char': char
})

print objects
# [{letter: 'a', 'number': 0, 'char':'!'}, {letter: 'a', 'number': 0, 'char':'@'}, ...

我正在尝试弄清楚如何制作包含三个列表的每种组合的字典列表。在上面的示例中使用嵌套的 for 循环,这是 26 x 10 x 4 循环。我查看了使用 zip,但只合并了列表,并没有给出每个唯一的组合。

有没有比 26 x 10 x 4 循环更快完成它的 pythonic 方法?

有没有办法通过生成器懒惰地完成这个?如果是,怎么办?

最佳答案

您可以使用 itertools.product计算所有提供的可迭代对象之间的笛卡尔积:

import itertools
import string

for letter, number, char in itertools.product(string.ascii_lowercase, string.digits, string.punctuation):
print({'letter': letter, 'number': number, 'char': char})

关于python - 执行嵌套 for 循环以生成字典的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28204717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com