2016-09-27 13 views
0

をアイテムにアクセスするには、リスト内の数字を使用して、私はアイテムを持っている:リストでpythonで辞書に

my_list = [18, 15, 22, 22, 25, 10, 7, 25, 2, 22, 14, 10, 27] 

と私は「のループを使用して、私の辞書内のアクセス項目にこれらを使用したいです'、これらの項目を新しいリストに追加します。私の辞書は次のようになります:

どうすればこのことができますか?私はこのようなループを試しました:

for i in my_list: 
    my_newlist = [] 
    letters = number_value[keys.index(i)] 
    letters.append(my_newlist) 

しかし、私はそうすることでエラーが発生しています。乾杯。

私はアイテムを検索することによって、キーを取得する私は折返し機能を持っている私のコードの別の領域で

、:それは、換字式暗号コードで使われている

for i in my_list: 
    third_list = [] 
    num_val = keys[values.index(i)] + key_shift 
    third_list.append(num_val) 
    print(num_val) 

。上の例では、 "A"に対応するキーを辞書で検索し、そのキーをリストに格納します。あなたは単にあなたが暗黙的に数値my_listのリストをループし、値を取得するには、キーとしてそれぞれの数使用して辞書my_dictを形成するところlist comprehension使用することができます

+0

を無視して、あなたのコードサンプルで矛盾を指摘してきた答えを調整することができます知っていますキーは定義されていますか? –

+0

..そしてなぜあなたは 'key.index(i)'をやっているのですか?あなたは結果として手紙に何を見たいと思いますか? – SuperSaiyan

+0

@スーパーサイヤンが修正されました。申し訳ありません – Kyle

答えて

2

my_dict = {i: chr(i+64) for i in range(27)} 
my_list = [1, 5, 19] 

result = [my_dict[i] for i in my_list] 
print(result) 

利回りを

['A', 'E', 'S'] 

あなたのリストmy_listにあなたのdict my_dictに存在しない数字が含まれている可能性があるので、KeyErrorを確認してください。あなたは取り扱い明示的に例外を回避したい(そして静かに行方不明のキーを省略した)場合は、このような何かを行うことができます。

result = [my_dict[i] for i in my_list if i in my_dict.keys()] 
print(result) 
+0

ありがとう!それは働いた – Kyle

1
切り取ら

あなたのコードは、あなたが定義されていない変数number_valuesを使用しているため、完全であるように思われませんあなたの例では。 EDIT:まだあなたが提供したコードで定義されていない変数を使用しているので、私はエラーを再現できません。 @jbndlrはあなたに言ったとして行うとKeyErrorをチェックされていない場合:さらに、あなたは毎回

あなたthird_listmy_newlisを上書きしている私はmy_listのキーがmy_dictにも存在していることを前提としています。

my_list = [1, 2, 3, 26, 27] 

my_dict = {1:"A", 2:"B", 3:"C" , 26:"Z", 27:"_"} 

my_newlist = [] 
for i in my_list: 
    letters = my_dict[i] 
    my_newlist.append(letters) 

print my_newlist 

これでアイテムが生成されます。あなたが何か他のものを探しているなら、私はので、私は

+0

ええ、私はあなたのために、それは私が取り組んでいるコードから抽出されたものです。変数名を単純化する必要がありました。コードが完成したら、私はGitHub httpsにアップロードします: //github.com/Bluestormy/Python。乾杯! – Kyle

1

その他はとても軽率 `number_value`と`であるそれら:)

my_list = [18, 15, 22, 22, 25, 10, 7, 25, 2, 22, 14, 10, 27] 
my_dict = {0: '@', 1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E', 6: 'F', 7: 'G', 8: 'H', 9: 'I', 10: 'J', 11: 'K', 12: 'L', 13: 'M', 14: 'N', 15: 'O', 16: 'P', 17: 'Q', 18: 'R', 19: 'S', 20: 'T', 21: 'U', 22: 'V', 23: 'W', 24: 'X', 25: 'Y', 26: 'Z', 27: '_'} 
my_newlist = [] 
for i in my_list: 
    letters = my_dict[i] 
    my_newlist.append(letters) 

my_newlist 
['R', 'O', 'V', 'V', 'Y', 'J', 'G', 'Y', 'B', 'V', 'N', 'J', '_'] 

#Now reverse the operation to build third_list 

third_list = [] 
for i in my_newlist: 
    key = my_dict.keys()[my_dict.values().index(i)] 
    third_list.append(key) 

third_list 
[18, 15, 22, 22, 25, 10, 7, 25, 2, 22, 14, 10, 27]