谢谢你帮助我。我正在学习 Python,但我无法通过运行两个 for 循环来对单个字典中的所有信息进行响应。
看这个例子,如果我像这样运行循环......
mylist1 = ["image1", "image2", "image3"]
pictures_list = ["image1_url", "image2_url", "image3_url"]
mydict = {}
for item in mylist1:
mydict['name'] = item
for url in pictures_list:
mydict['url'] = url
print(mydict)
我有这个答案,它重复了 3 次
{'name': 'image1', 'url': 'image1_url'}
{'name': 'image1', 'url': 'image2_url'}
{'name': 'image1', 'url': 'image3_url'}
{'name': 'image2', 'url': 'image1_url'}
{'name': 'image2', 'url': 'image2_url'}
{'name': 'image2', 'url': 'image3_url'}
{'name': 'image3', 'url': 'image1_url'}
{'name': 'image3', 'url': 'image2_url'}
{'name': 'image3', 'url': 'image3_url'}
如果我像这样在打印语句中删除一个缩进...
mylist1 = ["image1", "image2", "image3"]
pictures_list = ["image1_url", "image2_url", "image3_url"]
mydict = {}
for item in mylist1:
mydict['name'] = item
for url in pictures_list:
mydict['url'] = url
print(mydict)
我通过单次迭代来添加键,但它不会迭代值分配。
{'name': 'image1', 'url': 'image3_url'}
{'name': 'image2', 'url': 'image3_url'}
{'name': 'image3', 'url': 'image3_url'}
所以我想知道如何实际构建代码以获得这样的输出
{'name': 'image1', 'url': 'image1_url'}
{'name': 'image2', 'url': 'image2_url'}
{'name': 'image3', 'url': 'image3_url'}
答案 0 :(得分:2)
zip
会将您的两个列表打包成一个列表,其中每个列表中具有相同索引的项目将被放入一个元组中:
print(list(zip(mylist1,pictures_list)))
输出:
[('image1', 'image1_url'), ('image2', 'image2_url'), ('image3', 'image3_url')]
由于 dict
可以获取元组列表并将它们转换为字典,因此您可以使用:
dictionary = dict(zip(mylist1,pictures_list))
print(dictionary)
输出:
{'image1': 'image1_url', 'image2': 'image2_url', 'image3': 'image3_url'}
这不仅为您的问题提供了简洁易读的解决方案,而且时间复杂度为 O(n)
,比您的 O(n**2)
尝试有所改进。
答案 1 :(得分:0)
类似于下面的内容
images = ["image1", "image2", "image3"]
urls = ["image1_url", "image2_url", "image3_url"]
data = [{'name': images[i], 'url': urls[i]} for i in range(len(images))]
print(data)
输出
[{'name': 'image1', 'url': 'image1_url'}, {'name': 'image2', 'url': 'image2_url'}, {'name': 'image3', 'url': 'image3_url'}]