我有两个想要合并的列表:
old = ['aaa', 'bbb', 'ccc']
new = ['AAA', 'BBB', 'CCC']
我想制作一个字典列表,如下所示:
myList = [{'lama': 'aaa', 'baru': 'AAA'}, {'lama': 'bbb', 'baru': 'BBB'}, {'lama': 'ccc', 'baru': 'CCC'}]
我尝试的是:
myList = []
myDict = {}
old = ['aaa', 'bbb', 'ccc']
new = ['AAA', 'BBB', 'CCC']
for idx, value in enumerate(old):
myDict['lama'] = old[idx]
myDict['baru'] = new[idx]
myList.append(myDict)
print(myList)
结果是:
[{'lama': 'ccc', 'baru': 'CCC'}, {'lama': 'ccc', 'baru': 'CCC'}, {'lama': 'ccc', 'baru': 'CCC'}]
我应该怎样做才能得到我想要的结果? 谢谢
尝试
myList = [{'lama': i, 'baru': j} for i, j in zip(old, new)]
您的代码只有一个初始化字典的小问题。重复的更新会就地更改原始字典,因此如果您在循环中初始化它,它应该可以工作。
myList = []
old = ['aaa', 'bbb', 'ccc']
new = ['AAA', 'BBB', 'CCC']
for idx, value in enumerate(old):
myDict = {}
myDict['lama'] = old[idx]
myDict['baru'] = new[idx]
print(myDict)
myList.append(myDict)
print(myList)
您还可以使用
zip
同时遍历相同长度的列表。
old = ['aaa', 'bbb', 'ccc']
new = ['AAA', 'BBB', 'CCC']
myList = []
for x,y in zip(old, new):
myList.append({"lama": x, "baru":y})
这是输出:
[{'lama': 'aaa', 'baru': 'AAA'}, {'lama': 'bbb', 'baru': 'BBB'}, {'lama': 'ccc', 'baru': 'CCC'}]