我正在努力实现以下目标但却无法完全得到我想要的东西。
l1 = ['a','b','c']
l1_values = [1,2,3]
l1_new = [a,c]
比较l1和l1_new列表并返回相对位置元素 l1_values
结果:
l1_values = [1,3]
这些列表很长,所以循环通过它们必须找到差异,不同的元素可以在列表中的任何位置
答案 0 :(得分:1)
如果l1
中的所有元素都是唯一的,您可以从l1
和l1_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.