检测重复元素的python

问题描述 投票:1回答:2

我从服务器上不断地获取数据,并且可以通过下面的代码行来接收数据。

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中做到这一点?

python arrays python-3.x list
2个回答
2
投票

使用已经作为注释添加的提示,你可以创建类似的东西。

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")

2
投票

你想保留一个字典,字典中的键是你的。id 而该值是一个 set 您可以将所有的值添加到

from collections import defaultdict
results = defaultdict(set)

id, type, value = getId(payload)
results[id].add(value)

这个字典将保留所有的值,每个 id.

需要注意的是,使用集合会删除重复的值,所以如果你想保留每一个值,包括重复的值,请使用 list 而是

© www.soinside.com 2019 - 2024. All rights reserved.