python - 如何以最有效的方式翻转数据集?
问题描述
假设我们有一个像这样的数据集:
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)
然后保存输出。
解决方案
为此使用 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']}
推荐阅读
- c - 组件 IA32 中的符号扩展
- android - 大家好,你能帮我解决一个问题,当从 json 删除、添加或更新数据时,我的 recyclerview 应该自动更新
- javascript - ReactJs 中带有承诺和状态变量的无限循环
- python - Writing with Python Greek letters to (Oracle) SQL file doesn't work
- javascript - Showing the contents of a MYSQL database on a webpage using node.js and html
- visual-c++ - 使用 CMake 在 MSVC 中使用 Pytorch Cuda c++ 编译 C++/Cuda 扩展时出错
- ios - If AppleWebKit appears in the user agent does that mean it's definitely an apple device?
- html - Sticky-top not working with bootstrap navbar
- arduino - How to control the speed of a stepper motor using PID control and ultrasonic sensor?
- java - Query in SQL not producing result