我有2个相同大小的列表:
list1 = ['event1','event2'] #up to event-n
list2 = ['desc1', 'desc2'] #up to desc-n
我希望迭代2个列表,并以动态方式将数据作为值放入字典中。
预期输出:
payload={
"outer_key" : [ {
"key1" : event1,
"key2" : desc1
},
{
"key1" : event2,
"key2" : desc2
}
]}
由于有
注意:列表中的每个字典都是固定大小的 即每个字典只有2个键 - 键1和键2。
我的尝试:
import itertools
list1 = ['event1','event2'] #up to event-n
list2 = ['desc1', 'desc2'] #up to desc-n
for f, b in itertools.izip(list1, list2):
payload={
"outer_key" : [ {
"key1" : f,
"key2" : b
}]}
print payload
明显且实际输出:
payload= {'outer_key': [{'key1': 'event2', 'key2':'desc2'}]}
根据列表大小动态增长 key1 和 key2 的最佳方法是什么?
编辑1:假设只有1个“outer_key”,它只有1个值 - 这是一个列表。列表中有“n”个字典。
答案 0 :(得分:3)
您正在使用循环的每次迭代替换列表。而是在循环外实例化列表并在其中附加到它。
import itertools
list1 = ['event1','event2'] #up to event-n
list2 = ['desc1', 'desc2'] #up to desc-n
payload = {
"outer_key" : []
}
for f, b in itertools.izip(list1, list2):
payload["outer_key"].append({"key1" : f, "key2" : b})
print payload