好的,所以我试图在同一行保存所有相同值的键。
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;警察;警察局长;答案 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()