我想从列表列表中找到最常见的符号序列

如何解决我想从列表列表中找到最常见的符号序列

我想从 [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_1KR8877J_2KR8877J_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()seqseq[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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?