在纯Python,只是建立一个顶级字典,使用dict.setdefault()
物化嵌套字典,如果仍然丢失:
result = {}
for outer, inner, value in data:
result.setdefault(outer, {})[inner] = value
这是分组数据的最简单和更可读的方式。
演示:
>>> data = [
... ('di', 'c1', 'avg11'),
... ('di', 'c2', 'stdev12'),
... ('eng', 'c1', 'stdev21'),
... ('eng', 'c2', 'stdev22')
... ]
>>> result = {}
>>> for outer, inner, value in data:
... result.setdefault(outer, {})[inner] = value
...
>>> result
{'di': {'c1': 'avg11', 'c2': 'stdev12'}, 'eng': {'c1': 'stdev21', 'c2': 'stdev22'}}
如果必须已经data1
和data2
变量之后,只需设置那些来自'di'
和'eng'
键:
data1 = result['di']
data2 = result['eng']
但这是相当不灵活,如果你有更多或更少或不同的外键。
为什么单独的变量名?为什么不只是一个带有'di''和''eng''键的顶级字典? –