将字典列表拆分为几个字典列表

我一直在努力解决这一问题,但无济于事。任何帮助将不胜感激。

我有:

[{'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 collections

result = 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

回到顶部