Python将所有键保存到同一行的值

时间:2017-10-15 13:56:47

标签: python dictionary

好的,所以我试图在同一行保存所有相同值的键。

lista = {'Cop': '911', 'Police chief': '911'}
spara = lista
fil = open("test" + ".txt","w")
print "savin to file "
for keys, values in spara.items():
    spara_content = spara[keys] + ";" + keys
    fil.write(spara_content)
    fil.write(";")
    fil.write("\n")
fil.close()
print lista

代码现在就像这样保存

911;警察;
911;警察局长;

但是当密钥具有相同的值时,我需要代码是这样的。

911;警察;警察局长;

2 个答案:

答案 0 :(得分:1)

按值排序lista字典项列表(如911),然后迭代所有具有相同值的组(如911),然后加入/打印所有键每个组(前面有组唯一值):

>>> from operator import itemgetter
>>> from itertools import groupby
>>> lista = {'Cop': '911', 'Police chief': '911'}
>>> [";".join([k]+[v[0] for v in vs]) for k,vs in groupby(sorted(vals.items(), key=itemgetter(1)), itemgetter(1))]
['911;Cop;Police chief']

答案 1 :(得分:0)

你可以试试这个:

lista = {'Cop': '911', 'Police chief': '911'}
from collections import defaultdict
d = defaultdict(list)
fil = open("test.txt","w")
for a, b in lista.items():
   d[b].append(a)
for a, b in d.items():
   fil.write(a+';'+';'.join(b)+"\n")
fil.close()