比较python中的两个变量列表

2024-04-16 07:50:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有两个包含元素的列表。我想对这两个列表进行一些检查。我的清单如下:

list_A = [["'EASY'", "'LEVEL_C'", "'4'", '0.714', '\n'], ["'EASY'", "'LEVEL_D'", "'5'", '0.778', '\n'], ["'EASY'", "'LEVEL_D'", "'5'", '0.226', '\n'], ["'EASY'", "'LEVEL_D'", "'5'", '0.222', '\n'], ...]
list_B = [["'EASY'", "'LEVEL_B'", "'2'", '1.000', '\n'], ["'EASY'", "'LEVEL_C'", "'3'", '1.000', '\n'], ["'EASY'", "'LEVEL_D'", "'4'", '1.000', '\n'], ["'EASY'", "'LEVEL_D'", "'4'", '0.290', '\n'], ...]

第三级变量(u-1)对应于变量值(u-1)。我要做的是比较这两个列表中的变量easy and level,并找出在所有情况下,这两个列表(list_u A和list_B)中哪个得分更高,并且有哪些可信度。我该怎么做?在

按照我构建规则的方式,一开始我从一个可执行文件中获取行并将它们过滤到列表中。我的列表的向量示例如下:

^{pr2}$

以及我用来创建向量的代码:

 for row in my_lines:
   print row
   row = re.sub('[()]', "", row)
   row = row.replace("Rule: ", "")
   row = row.replace(",", "")
   row = row.replace("==>", "")
   print row
   split = re.split(r' +', row)
   print split

一旦我创建了我的列表,我就用对应于变量级别的第二个元素对它们进行排序:

list_A.sort(key=lambda x: x[1])
list_B.sort(key=lambda x: x[1])

编辑:我已经用变量级别对列表进行了排序。现在我要比较两个列表中所有变量级别的分数。当一个分数为零的系统不应该存在两次时,当一个分数最高的系统不存在时。如何比较变量级别的所有可能值?在


Tags: re元素列表排序easy级别sortlevel
2条回答

我的问题的最终解决方案是使用字符串的简单排序对列表排序,然后压缩两个列表,以便能够执行比较。使用的代码如下:

list_A.sort(key=lambda x: x[1])
list_B.sort(key=lambda x: x[1])
res = zip(list_A, list_B)

然而,在前面的答案中提出的字典解决方案似乎比使用列表更有效。在

这只是一个部分的答案,但是如果把数据放在一个dicts的dict中会更令人愉快:

dict_a = {
    'LEVEL_D': {'difficulty': 'EASY', 'score': 1, 'confidence': 0.778},
    'LEVEL_F': {'difficulty': 'EASY', 'score': 6, 'confidence': 0.750},
    'LEVEL_C': {'difficulty': 'EASY', 'score': 7, 'confidence': 0.714},
    }

dict_b = {
    'LEVEL_F': {'difficulty': 'EASY', 'score': 8, 'confidence': 0.800},
    'LEVEL_B': {'difficulty': 'EASY', 'score': 2, 'confidence': 0.900},
    'LEVEL_D': {'difficulty': 'EASY', 'score': 3, 'confidence': 1.000},
    }

然后,您可以编写一个简单的for循环来获得内部dict的所需值:

^{pr2}$

我们需要重新安排数据。列表方法实际上也可以工作,但效率较低。主要问题是数据排序不正确。在

编辑:若要获取特定级别分数较高的列表名称,可以执行以下操作:

^{3}$

相关问题 更多 >