我从服务器上不断地获取数据,并且可以通过下面的代码行来接收数据。
id, type, value = getId(payload)
然后我想把它们写进一个文件里,通过:
out.write(str(id) + ";" + str(type) + ";" + str(value) + "\n")
现在的情况是,同一个id可以出现很多次,但是值会有所不同。因此,我想将out.write扩展为以下方式,使不同的值被添加到右侧,但仍然被引用到同一个id。
out.write(str(id) + ";" + str(type) + ";" + str(value) + ";" + str(value1) + ";" + str(value2) + "\n")
有谁知道如何在python中做到这一点?
使用已经作为注释添加的提示,你可以创建类似的东西。
from collections import defaultdict
values = defaultdict(set)
types = dict()
for payload in input_stream:
id, type, value = get(payload)
values[id].add(value)
types[id] = type
for id in types.keys():
out.write(";".join(map(str, [id, types[id]] + list(values[id]))) + "\n")
你想保留一个字典,字典中的键是你的。id
而该值是一个 set
您可以将所有的值添加到
from collections import defaultdict
results = defaultdict(set)
id, type, value = getId(payload)
results[id].add(value)
这个字典将保留所有的值,每个 id
.
需要注意的是,使用集合会删除重复的值,所以如果你想保留每一个值,包括重复的值,请使用 list
而是