如何解决我想从列表列表中找到最常见的符号序列
我想从 [lists] 列表中找到最常出现的符号序列
CATEGORIES = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","U","V","W","X","Y","Z"]
KR8877J = [[0.002,0.006,0.004,0.045,0.002,0.017,0.077,0.001,0.035,0.042,0.005,0.039,0.008,0.058,0.352,0.007,0.009,0.089,0.036,0.053,0.041,0.004],[0.003,0.075,0.020,0.044,0.026,0.033,0.003,0.049,0.360,0.021,0.014,0.092,0.048,0.031,[0.002,0.000,0.025,0.012,0.627,0.022,0.011,0.040,0.015,0.053],[0.056,0.023,0.038,0.050,0.412,0.027,0.073,0.024,0.013,0.074,0.006],[0.025,0.034,0.018,0.090,0.258,0.016,0.079,0.030,0.106,0.014],[0.048,0.019,0.028,0.100,0.029,0.032,0.317,0.002],[0.013,0.164,0.060,0.383,0.063,0.010,0.012]]
KR8877J_1 = [[0.004,some data]]
KR8877J_2 = [[0.002,some data]]
KR8877J_3 = [[somedata]
KR8877J_4 = [[0.006,some data,0.008]]
KR8877J_5 = [[some data]]
KR8877J_6 = [[some data]]
def readable(x):
tag = []
for lst in x:
index = max(enumerate(lst),key=lambda pair: pair[1])[0]
tag.append(CATEGORIES[index])
tag.reverse()
str = tag
print(str)
#print(tag)
for i in (KR8877J,KR8877J_1,KR8877J_2,KR8877J_3,KR8877J_4,KR8877J_5,KR8877J_6):
readable(i)
def compare_bitwise(a,b):
a_set = set(a)
b_set = set(b)
if (a_set & b_set):
return True
else:
return False
for i in (KR8877J,KR8877J_6):
print(compare_bitwise(i,i+=1))
迭代问题在这里:print(compare_bitwise(i,i+=1))
我只在第一个列表中给出了一个数据示例,因为它们都是相同的专家,输出为 ['K','R','8','J','7',' J'] 代替 ['K','J']
解决方法
如果没有 some data
的示例,很难说出预期的内容。在任何情况下,对于行 print(compare_bitwise(i,i+=1))
- 如果您尝试将每个 KR8877J_...
序列与下一个进行比较,那么 KR8877J_1
与 KR8877J_2
、KR8877J_2
使用 KR8877J_3
等 - 那么最小的变化是:将该序列分配给列表或元组,然后相应地索引。
seq = (KR8877J_1,KR8877J_2,KR8877J_3,KR8877J_4,KR8877J_5,KR8877J_6)
for i in range(len(seq) - 1):
print(compare_bitwise(seq[i],seq[i+1]))
但是在 Python 中使用 range()
和 len()
进行索引不是很好也不是很有效。相反,最好将 zip()
与 seq
和 seq[1:]
一起使用:
seq = (KR8877J_1,KR8877J_6)
for i,j in zip(seq,seq[1:]):
print(compare_bitwise(i,j))
编辑:我不完全明白你的意思,但你可以使用 tag_tup = tuple(tag)
和 return
将标签列表转换为元组来自 readable()
的值而不是仅仅打印它。或者只是return tag
。然后通过在循环 counter = collections.Counter()
之前执行 readable(i)
将其作为 collections.Counter
的键提供,然后在循环内执行 counter.update({tag_tup: 1})
以及 tag_tup
。
def readable(x):
tag = []
for lst in x:
index = max(enumerate(lst),key=lambda pair: pair[1])[0]
tag.append(CATEGORIES[index])
tag.reverse()
print(tag)
return tag
import collections
counter = collections.Counter()
for i in (KR8877J,KR8877J_1,KR8877J_6):
tag_tup = tuple(readable(i))
counter.update({tag_tup: 1})
print(counter)
请参阅 collections.Counter
文档(上面链接),然后获取 most_common
组合。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。