比较python中的两个列表

比较python中的两个列表,python,Python,我有一个python函数,它有两个变量作为输入,即所谓的current\u level和current\u affect。该函数使用训练数据计算一些规则,这些规则可以使用这两个变量计算决策,即当前\u级别和当前\u影响。代码包含两个列表列表A和列表B。清单包括以下内容: list_A = [["'easy'", "'C'", "'4'", '0.714', '\n'], ["'easy'", "'D'", "'5'", '0.778', '\n'],

我有一个python函数,它有两个变量作为输入,即所谓的current\u levelcurrent\u affect。该函数使用训练数据计算一些规则,这些规则可以使用这两个变量计算决策,即当前\u级别当前\u影响。代码包含两个列表列表A列表B。清单包括以下内容:

list_A = [["'easy'", "'C'", "'4'", '0.714', '\n'], 
          ["'easy'", "'D'", "'5'", '0.778', '\n'], 
          ["'easy'", "'E'", "'5'", '0.500', '\n'], 
          ["'easy'", "'F'", "'6'", '0.750', '\n']]
list_B =  [["'easy'", "'B'", "'2'", '1.000', '\n'], 
           ["'easy'", "'C'", "'3'", '1.000', '\n'], 
           ["'easy'", "'D'", "'4'", '1.000', '\n'], 
           ["'easy'", "'E'", "'5'", '0.875', '\n'], 
           ["'easy'", "'F'", "'6'", '1.000', '\n']]
def association_rules_adaptation(level, current_affect):
列表的第一个元素对应于当前\u水平,第二个元素对应于当前\u影响,第三个元素对应于变量得分。因此,我想要的是,通过了解我的当前影响方法的输入,找出此特定情况下两个列表中的哪一个得分更高,并在列表a的情况下返回相应的值1,在列表B的情况下返回-1,或在相等情况下返回零。变量current\u affect的值介于A-F之间。首先,如何在列表中添加不存在的current\u affect值。例如,list_A缺少级别A和B,而list_B缺少级别A(我想用零添加子列表),最后,如何计算返回值

我的职能如下:

list_A = [["'easy'", "'C'", "'4'", '0.714', '\n'], 
          ["'easy'", "'D'", "'5'", '0.778', '\n'], 
          ["'easy'", "'E'", "'5'", '0.500', '\n'], 
          ["'easy'", "'F'", "'6'", '0.750', '\n']]
list_B =  [["'easy'", "'B'", "'2'", '1.000', '\n'], 
           ["'easy'", "'C'", "'3'", '1.000', '\n'], 
           ["'easy'", "'D'", "'4'", '1.000', '\n'], 
           ["'easy'", "'E'", "'5'", '0.875', '\n'], 
           ["'easy'", "'F'", "'6'", '1.000', '\n']]
def association_rules_adaptation(level, current_affect):
然后在代码中,我压缩了两个列表:

res = zip(list_A,list_B)
有了zip,我想把两个关于当前影响的列表链接在一起,以便能够比较哪一个列表对特定的当前影响得分更高。问题在于,当列表中不包含与当前_impact完全相同的值时,我会链接不相似的内容:

(["'easy'", "'C'", "'3'", '0.714', '\n'], ["'easy'", "'B'", "'2'", '1.000', '\n'])
(["'easy'", "'D'", "'4'", '0.778', '\n'], ["'easy'", "'C'", "'3'", '1.000', '\n'])
(["'easy'", "'E'", "'5'", '0.500', '\n'], ["'easy'", "'D'", "'4'", '1.000', '\n'])
(["'easy'", "'F'", "'6'", '0.750', '\n'], ["'easy'", "'E'", "'5'", '0.875', '\n'])
因此,我想在列表中添加所有可能的值,以便能够正确链接它们,然后执行比较

    for row in res:
    print (row)
    print ("Level", level, ": ", row[0][1])
    if (row[0][2] > row[1][2]) or (row[0][2] == row[1][2]):
        print ("1")
    else:
        print ("-1")
编辑:我想检查缺少哪些列表,并将它们添加到列表A和列表B中,如下所示:

list_A = [["'easy'", "'A'", "'0'", '0', '\n'], //added sublist
          ["'easy'", "'B'", "'0'", '0', '\n'], //added sublist
          ["'easy'", "'C'", "'4'", '0.714', '\n'], 
          ["'easy'", "'D'", "'5'", '0.778', '\n'], 
          ["'easy'", "'E'", "'5'", '0.500', '\n'], 
          ["'easy'", "'F'", "'6'", '0.750', '\n']]
list_B =  [["'easy'", "'A'", "'0'", '0', '\n'], //added subilst
           ["'easy'", "'B'", "'2'", '1.000', '\n'], 
           ["'easy'", "'C'", "'3'", '1.000', '\n'], 
           ["'easy'", "'D'", "'4'", '1.000', '\n'], 
           ["'easy'", "'E'", "'5'", '0.875', '\n'], 
           ["'easy'", "'F'", "'6'", '1.000', '\n']]

然后压缩列表并进行比较。

我会尝试将这些列表转换为更适合查找内容的数据结构,例如字典。这有点混乱,但是:

    for row in res:
    print (row)
    print ("Level", level, ": ", row[0][1])
    if (row[0][2] > row[1][2]) or (row[0][2] == row[1][2]):
        print ("1")
    else:
        print ("-1")
level_lookup = {l[0]: int(l[2]) for l in list_B}
affect_lookup = {l[1]: int(l[2]) for l in list_B}

if current_level in level_lookup:
    level_score = level_lookup[current_level] 
else:
    level_score = 0
if current_affect in affect_lookup:
    affect_score = affect_lookup[current_affect]
else:
    affect_score = 0

return max(level_score, affect_score)

请用您的代码编辑问题。预期的输出为1、-1和0。使用什么输入?当前\u影响。使用当前_效果,我想看看这个特定的当前_效果的两个列表中哪一个得分更高,然后返回对应的1,0,-1。我发布了一些代码,只是检查了我的所有案例列表。问题是,zip东西忽略了当前\u效果之间的真正链接,因为列表中不包含相同的当前\u效果,因此我想添加所有这些内容,以便能够对所有情况进行比较。可能我还不够清楚。我有两个列表列表列表A和列表B每个列表包含4个变量(级别、当前影响、分数、信心)。这个例子中的变量是常量,取相同的值,所以我不关心它。因此,通过考虑current_affect变量,我希望链接两个列表list_A和list_B。理想情况下,我希望为每个不同的current_affect{A,B,C,D,E,F}链接它们,即使在初始列表中为空的情况下(因此在这种情况下,我希望以分数=0和置信度=0对其进行初始化).我正在测试您的示例,并收到:TypeError:“zip”对象不是subscriptableI我在Python 2中测试了它。检查这个是的,它似乎是Python2和Python3之间的一个dif。它也是xrange和range相同的东西吗?我对xrange也有一些问题,它们很相似
range
在内存中创建整个列表,而
xrange
不创建。