python字典中,有个文本, 两列值 1对多关系,请问怎么把key和value都放在字典里呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python字典中,有个文本, 两列值 1对多关系,请问怎么把key和value都放在字典里呢?相关的知识,希望对你有一定的参考价值。

例:1860,101000330
1861,101000335
1861,101000337

数据量有2万行,请问怎么操作?

参考技术A >> 请问怎么把key和value都放在字典里呢
这是什么意思?你没有说什么是key什么是value。到底想获得怎样的dict结构?
1对多如果用字典,典型值应该是这样:


1860: [101000330],
1861: [101000335, 101000337]

用defaultdict很容易实现。追问

具体点,怎么操作。。。

追答

from collections import defaultdict
d = defaultdict(lambda: [])
with open('data.txt', 'rb') as f:
for line in f:
key, value = line[:-1].split(",")
d[key].append(value)
for k,v in d.iteritems():
print k, v

参考技术B file = open('test')
d = 
for line in file.readlines():
line = line.replace('\\n','')
k_v = line.split(',')
if k_v[0] in d.keys():
d[k_v[0]].append(k_v[1])
else:
d[k_v[0]] = [k_v[1]]
print d

参考技术C d =
for line in text.split():
key, value = line.split(",")
d[key] = value追问

我就是这样操作的,请告诉我为什么不能更新

本回答被提问者采纳

Python中,如何合并两个键相同,值为元祖类型的字典?

dicxs="李明":("男",19), "杨柳":("女",18), "张一凡":("男",18), "许可":("女",20), "王小小":("女",19), "陈心":("女",19)
diccj="李明": (78,89,90), "杨柳": (51,89,56), "张一凡": (82,90,96),"许可": (93,90,98), "王小小": (69,89,91), "陈心": (50,85,68)

你好,下面是对应的代码:把元祖变成list合并
C =
for key in list(set(dicxs) | set(diccj)):
if dicxs.get(key) and diccj.get(key):
C[key]= list(dicxs[key])+list(diccj[key])
elif dicxs.get(key):
C[key]=list(dicxs[key])
else:
C[key]=list(diccj[key])
参考技术A 那你要怎么合并两个元组呢?追问

合并成 dicxscj="李明":("男",19,78,89,90)。。。。。。。。这样的

追答

dicxscj = k: v + diccj[k] for k, v in dicxs.items() if k in diccj

结果为两个字典的交集

本回答被提问者采纳

以上是关于python字典中,有个文本, 两列值 1对多关系,请问怎么把key和value都放在字典里呢?的主要内容,如果未能解决你的问题,请参考以下文章

将字典转换为两列熊猫数据框[重复]

Python中,如何合并两个键相同,值为元祖类型的字典?

Python中,如何合并两个键相同,值为元祖类型的字典?

使用 SQL 比较两列值

无法使用 Python 字典作为列值执行 SQL 插入命令

使用 Tag 模型创建多对多关系