2016-12-26 82 views
-1

我试图实现以下功能,但无法获得我想要的功能。比较两个列表中的元素并返回第三个列表元素的差异

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

比较L1和l1_new名单和返回的 l1_values

结果相对位置的元素:

l1_values = [1,3] 

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

+0

是'l1'中的所有元素都是唯一的? – Psidom

+1

你有试过什么吗?有没有你写的代码? – user1211

+0

在'l1_new'中,是'a'和''c''变量,是写成的,还是你的意思是它们是字符串''a''和''c'',就像'l1'一样? –

回答

1

如果l1中的所有元素都是唯一的,则可以创建一个dicti onary从l1l1_values,然后查找值,同时通过l1_new循环:

my_dict = dict(zip(l1, l1_values)) 

[my_dict[k] for k in l1_new] 
# [1, 3] 
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] 
0

单行溶液,假设l1_values可以是从给定的顺序不同:

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

Yo u可以使用一个简单的 '关于':

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. 
相关问题