2016-04-06 15 views
-1

私の質問は、リスト内の各項目を辞書のキーと比較して取得し、その値を取得することです。リストと辞書をPythonで比較する

コード:

for each_element in list1: 
    for key,value in my_dictionary.items(): 
     if each_element == key: 
      output = value 

私が直面していますエラーがリストから要素では、次のとおりです。一致していません

list element: ['a','b'] 
key from dictionary: 'a,b' 

。これを行う方法はありますか?

+1

まずスニペットは有効なPythonコードではありません...そして、 'E' にはマッチに気付かない '、== B [ "A"、 "B"]'偽です、なぜそれは一致する必要がありますか?文字列はリストと等しくなることはありません。どうしてそうでしょうか? '' a、b == '、'。join(['a'、 'b']) 'は真実かもしれませんが、あなた自身がこの変換を行っていないので、なぜPythonがそれを推測すべきですか? –

+0

@Rogalski、実際にはPythonコードですが、テストスニペットを使って、私が何を間違っているのかを説明することができます –

+0

なぜループを使って辞書の項目を検索するのかわかりません。おそらく[ドキュメント](https://docs.python.org/3/tutorial/datastructures.html#dictionaries)にお問い合わせください。 – nneonneo

答えて

-1

[["a","b"],..]というあなたのリストを仮定し、辞書が{"a,b":val1,...}

out = (my_dict.get(",".join(item)) for item in my_list) 
# out := [val1, val2, None, None, val3..], None for non-existent keys 
# to weed out None vals 
out2 = (item for item in out if item) 
# and finally, consume the iterator 
output = list(out2) 
+0

@Signal投票を説明できますか? –

1

ことはしてみてください-以外ショット与えるとエラーを発生させることなく、任意の不一致を回避します。辞書の検索機能を使用する - myDictionary [KeyToSearchFor]は値があればそれを出力します。

L = ['a','b','c','d','e','f'] 
D = {'a':10,'b':20,'c':30,'d':40,'z':50,'f':60, 'g':70} 

for i in L: 
    try: 
     print("key: {}/value: {}".format(i,D[i])) 
    except KeyError: 
     continue 

出力は、

key: a/value: 10 
key: b/value: 20 
key: c/value: 30 
key: d/value: 40 
key: f/value: 60 
+0

注 - 一般的な 'except'ステートメントは、コード内の他の問題を隠すことができるので、一般的には良い考えではありません。 – MANA624

+0

私は同意しますが、確かにそれを展開して他の問題を隠すことはできません。しかし、はい...あなたは100%正しいサー – bvmcode

関連する問題