将字典列表拆分为几个字典列表
我一直在努力解决这一问题,但无济于事。任何帮助将不胜感激。
我有:
[{'event': 0, 'voltage': 1, 'time': 0},{'event': 0, 'voltage': 2, 'time': 1},
{'event': 1, 'voltage': 1, 'time': 2},
{'event': 1, 'voltage': 2, 'time': 3},
{'event': 2, 'voltage': 1, 'time': 4},
{'event': 2, 'voltage': 2, 'time': 5},
...]
我想按每个事件将字典列表拆分成这样(可以有许多事件):
list0 = [{'event': 0, 'voltage': 1, 'time': 0},{'event': 0, 'voltage': 2, 'time': 1}]
list1 = [{'event': 1, 'voltage': 1, 'time': 2},
{'event': 1, 'voltage': 2, 'time': 3}]
list2 = [{'event': 2, 'voltage': 1, 'time': 4},
{'event': 2, 'voltage': 2, 'time': 5}]
listN = ...
回答:
采用 defaultdict
import collectionsresult = collections.defaultdict(list)
for d in dict_list:
result[d['event']].append(d)
result_list = result.values() # Python 2.x
result_list = list(result.values()) # Python 3
这样,您不必对存在多少个不同事件或是否缺少任何事件做出任何假设。
这为您提供了列表列表。如果您希望dict
按事件建立索引,dict(d)
则如果您打算进行任何随机访问,则可能会用到。
至于构建一堆个人列表,我认为这是一个坏主意。eval
除非您确切知道有多少声称自己不打算使用,否则必须将它们创建为全局变量或使用它们(或以其他方式变乱)。最好将它们放在容器中。
以上是 将字典列表拆分为几个字典列表 的全部内容, 来源链接: utcz.com/qa/405867.html