按元素比较两个列表并返回第三个列表元素的差异

时间:2016-12-26 19:37:00

标签: python list

我正在努力实现以下目标但却无法完全得到我想要的东西。

l1 = ['a','b','c']
l1_values = [1,2,3]
l1_new = [a,c]

比较l1和l1_new列表并返回相对位置元素 l1_values

结果:

l1_values = [1,3] 

这些列表很长,所以循环通过它们必须找到差异,不同的元素可以在列表中的任何位置

4 个答案:

答案 0 :(得分:1)

如果l1中的所有元素都是唯一的,您可以从l1l1_values创建字典,然后在循环l1_new时查找值:

my_dict = dict(zip(l1, l1_values))

[my_dict[k] for k in l1_new]
# [1, 3]

答案 1 :(得分:0)

l1 = ['a','b','c']
l1_values = [1,2,3]
l1_new = ['a','c']

l1_values = [i+1 for i,v in enumerate(l1) if v in l1_new]
print l1_values

输出:

[1, 3]

答案 2 :(得分:0)

单行解决方案,假设l1_values可能与给定序列不同:

[l1_values[x] for x, val in enumerate(l1) if val in l1_new]

答案 3 :(得分:0)

您可以使用简单的' for':

list1 = {'a': [print, 1], 'b': [print, 2], 'c' : [print, 3]}
list2 = ['a', 'b']

for data in list2:
    if data in list1:
        list1[data][0](list1[data][1])

输出(1):

1
2

另一个例子:

list1 = {'hi': [print, 'hi :)'], 'How are you?': [print, 'iam fine.'],
         'what is your name?': [print, 'my name is emma.']}
list2 = ['hi', 'what is your name?']


for data in list2:
    if data in list1:
        list1[data][0](list1[data][1])

输出(2):

hi :)
my name is emma.