首页 > 解决方案 > 如何以最有效的方式翻转数据集?

问题描述

假设我们有一个像这样的数据集:

a: 1,2,3,5,6
b: 4,1,2
c: 1,4

现在我们想将此数据集转换为:

1: a,b,c
2: a,b
3: a
4: b,c
5: a
6: a

这种转换可以通过字典完成,但有没有办法更有效地做到这一点

目前我做如下:

uFile = open("t/u.txt","r")
uDic = dict()
for cnt1, line in enumerate(uFile):
    lineAr = line.strip().split(' ')
    for item in lineAr:
        if item not in uDic.keys():
           uDic[item] = []
        uDic[item].append(cnt1)

然后保存输出。

标签: pythonpython-3.xalgorithm

解决方案


为此使用 defaultdict:

from collections import defaultdict
d = {'a': [1, 2, 3, 5, 6], 'b': [4, 1, 2], 'c': [1, 4]}
o = defaultdict(list)

for k, v in d.items():
    for vv in v:
        o[vv].append(k)

print(dict(o))
{1: ['a', 'b', 'c'],
 2: ['a', 'b'],
 3: ['a'],
 5: ['a'],
 6: ['a'],
 4: ['b', 'c']}

推荐阅读