Python比较2个列表

Python比较2个列表,python,Python,我有以下两个清单: # a unicode list A= ["[u'899', u'1395']", "[u'908', u'2905']", "[u'423', u'2807']", "[u'440', u'9467']", "[u'430', u'722']", "[u'427', u'1700']", "[u'444', u'1696']", "[u'443', u'2672']", "[u'1049', u'2099']", "[u'916', u'2316']", "[u'923',

我有以下两个清单:

# a unicode list
A= ["[u'899', u'1395']", "[u'908', u'2905']", "[u'423', u'2807']", "[u'440', u'9467']", "[u'430', u'722']", "[u'427', u'1700']", "[u'444', u'1696']", "[u'443', u'2672']", "[u'1049', u'2099']", "[u'916', u'2316']", "[u'923', u'921']", "[u'905', u'1172']", "[u'1025', u'786']", "[u'433', u'896']", "[u'426', u'1628']", "[u'961', u'732']", "[u'922', u'944']", "[u'434', u'11981']", "[u'1058', u'1429']", "[u'1056', u'1761']", "[u'896', u'1548']", "[u'432', u'3015']", "[u'974', u'805']", "[u'1091', u'2654']", "[u'1098', u'212']", "[u'976', u'694']", "[u'949', u'742']", "[u'1048', u'752']", "[u'900', u'1574']", "[u'852', u'668']", "[u'466', u'1545']", "[u'925', u'1030']", "[u'435', u'1298']", "[u'1064', u'853']", "[u'431', u'2879']"]

# Type list
B= [[423L, '$2,779'], [426L, '$1,628'], [427L, '$1,664'], [430L, '$655'], [431L, '$2,658'], [432L, '$3,015'], [433L, '$896'], [434L, '$11,981'], [435L, '$1,298'], [440L, '$9,467'], [443L, '$2,672'], [444L, '$1,696'], [466L, '$1,545'], [787L, '$804'], [852L, '$664'], [896L, '$1,548'], [899L, '$1,395'], [900L, '$1,574'], [905L, '$1,172'], [908L, '$2,886'], [916L, '$2,286'], [922L, '$944'], [923L, '$921'], [925L, '$875'], [934L, '$2,575'], [949L, '$732'], [961L, '$727'], [974L, '$802'], [976L, '$511'], [1025L, '$786'], [1048L, '$752'], [1049L, '$2,099'], [1056L, '$1,761'], [1058L, '$1,417'], [1064L, '$835'], [1072L, '$3,409'], [1091L, '$2,654'], [1098L, '$212']]
我想在列表
A
“[u'899',u'1395']”中选择第一项,然后在第二个列表中搜索它。如果找到,则比较这些值并打印它们是否相同或不同,以及列表中所有其他项目是否相同。

有人能帮帮我吗?

一个又快又脏的解决方案。记住,这一点

我还假设,如果您将列表
A
中的
u'1395'
与列表
B
中的
'1395'
进行比较,您希望它们相等

for sublist_A in A:
    x, y = map(int, eval(sublist_A))
    for sublist_B in B:
        if sublist_B[0] == x:
            B_y = int(sublist_B[1].replace('$', '').replace(',', ''))
            print "For {}: {} is {}equal to {}".format(x, B_y, "not " if B_y != y else "", y)
这将作为输出提供:

For 899: 1395 is equal to 1395
For 908: 2886 is not equal to 2905
For 423: 2779 is not equal to 2807
For 440: 9467 is equal to 9467
For 430: 655 is not equal to 722
For 427: 1664 is not equal to 1700
For 444: 1696 is equal to 1696
For 443: 2672 is equal to 2672
For 1049: 2099 is equal to 2099
For 916: 2286 is not equal to 2316
For 923: 921 is equal to 921
For 905: 1172 is equal to 1172
For 1025: 786 is equal to 786
For 433: 896 is equal to 896
For 426: 1628 is equal to 1628
For 961: 727 is not equal to 732
For 922: 944 is equal to 944
For 434: 11981 is equal to 11981
For 1058: 1417 is not equal to 1429
For 1056: 1761 is equal to 1761
For 896: 1548 is equal to 1548
For 432: 3015 is equal to 3015
For 974: 802 is not equal to 805
For 1091: 2654 is equal to 2654
For 1098: 212 is equal to 212
For 976: 511 is not equal to 694
For 949: 732 is not equal to 742
For 1048: 752 is equal to 752
For 900: 1574 is equal to 1574
For 852: 664 is not equal to 668
For 466: 1545 is equal to 1545
For 925: 875 is not equal to 1030
For 435: 1298 is equal to 1298
For 1064: 835 is not equal to 853
For 431: 2658 is not equal to 2879

我认为,最好的解决办法是用第二个列表制作一本字典,然后用第一个列表来比较项目

步骤1-将2D类型列表转换为字典

def convert_to_dict(input_list):
    output_dict = {}
    for item in input_list:
        type, value = item
        output_dict[str(type)] = value.strip("$")
    return output_dict
步骤2-将unicode列表转换为2D(不需要,但便于操作,如果有,请稍后添加)

步骤3-查找并显示项目

def get_item_value_map(unicode_list, type_list):
    types_dict = convert_to_dict(type_list)
    items_list = convert_str_list_to_2d_list(unicode_list)
    for item, value in items_list:
        if item in types_dict and value == types_dict[item]:
            print "Values for %s are identical" % (item)
        else:
            print "Values for %s are different" % (item)

就目前而言,这个问题确实不清楚。你能给出一些小的列表,这些列表仍然足以证明你的问题,然后让我们知道你希望你的程序给出什么答案,以及你当前的程序给了你什么吗?这是你想要的,但你尝试了什么?好的。例如,我有一个unicode列表[“[u'899',u'1395']”和一个类型列表[[899L',$2779']]。我想迭代第一个列表,看看899是否在另一个列表中。如果是,则将899的值(在本例中为1395)与另一个列表中的值进行比较,并打印它们是否相同。谢谢。我知道这一点,但就目前而言,这将足以满足我的需要。如果我们假设您的数据来自某个摘录,为什么不确保它们至少具有相同的格式。如果不在您的控制范围内,请请求源更改格式。如果他们说不,你没有损失任何东西。你可以使用
ast.literal\u eval来代替eval
def get_item_value_map(unicode_list, type_list):
    types_dict = convert_to_dict(type_list)
    items_list = convert_str_list_to_2d_list(unicode_list)
    for item, value in items_list:
        if item in types_dict and value == types_dict[item]:
            print "Values for %s are identical" % (item)
        else:
            print "Values for %s are different" % (item)