检查元组Python中元素之间的相似性

检查元组Python中元素之间的相似性,python,list,tuples,similarity,Python,List,Tuples,Similarity,我有以下清单: list= [(12.947999999999979,5804),(100000.0,1516),(12.948000000000008,844),(12.948000000000036,172),(18.252000000000066,92)] 元组中的第一个元素表示值,而元组中的第二个元素表示该值在文档中出现的频率。我的问题是如何对列表中的类似元素(例如列表中的第一个元素和第三个元素)进行聚类并组合它们的频率 使用计数器元素和舍入()到所需的小数位数。顺便说一下,不要使用保

我有以下清单:

list= [(12.947999999999979,5804),(100000.0,1516),(12.948000000000008,844),(12.948000000000036,172),(18.252000000000066,92)]

元组中的第一个元素表示值,而元组中的第二个元素表示该值在文档中出现的频率。我的问题是如何对列表中的类似元素(例如列表中的第一个元素和第三个元素)进行聚类并组合它们的频率

使用
计数器
元素和
舍入()
到所需的小数位数。顺便说一下,不要使用保留字
列表

from collections import Counter

l= [(12.947999999999979,5804),(100000.0,1516),(12.948000000000008,844),(12.948000000000036,172),(18.252000000000066,92)]
precision = 3

c = Counter()

for value, times in l:
    c.update([round(value, precision)]*times)
如果计数器中已有数据,则可以直接执行此操作:

from collections import Counter

# data = Counter()  # This is the counter where you have the data
precision = 3

joined = Counter()

for value, times in data.items():
    joined.update([round(value, precision)]*times)

data = joined

设置一个阈值,其中两个值被认为属于同一个簇并结合它们的频率。你认为“相似”是什么?指定p`Recession。例如,差异小于10^-6的数字应分组。感谢您的回复。你能提供一个例子吗code@Adirio基本上,以12.9开头的值将分组为一个值value@LoniF遍历列表,为每个元素创建一个新集群或将其与现有集群组合。所以,
对于。。。如果:否则:
。你能做到的,洛尼!如果您有诸如
[(12.95804),(12.81516),(12.7844)]
之类的值,这确实会有点棘手,因为如果集群是基于第一个元素定义的,则最后一个将不包含thres 0.1。