迭代多个列表并将其用作增值字典

时间:2015-11-04 21:19:28

标签: python list python-2.7 dictionary

我有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 
  }
 ]}   

由于有事件 desc ,有没有办法制作一个灵活的字典,它会根据列表大小增长?

注意:列表中的每个字典都是固定大小的 即每个字典只有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”个字典。

1 个答案:

答案 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