2016-12-26 10 views
-1

以下を達成しようとしていますが、私が望むものを得ることができません。2つのリストを要素で比較し、3つ目の要素を返します。要素の差

l1_values = [1,3] 

これらのリストは非常に長いそれらを介してループが違いを見つけるために必須と異なっているので、次のとおりです。

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

は l1_values

結果の相対的な位置の要素をL1とl1_newリストを比較し、返します要素はリストのどこにでも配置することができます

+0

はありますが'l1'のすべての要素は一意ですか? – Psidom

+1

試しましたか?あなたが書いたコードはありますか? – user1211

+0

'l1_new'では' a'と 'c'変数が書かれていますか、' l1'のように 'a 'と' c'という文字列であることを意味しましたか? –

答えて

1

l1のすべての要素が一意の場合は、dicti l1_newをループしながらonary次いでl1l1_valuesから値を検索:

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

1行の溶液、所与の配列と異なっていてもよいl1_valuesを想定:

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

ヨー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. 
関連する問題