2016-09-27 57 views
0

我的项目:在列表中使用数字来访问项目在字典中的蟒蛇

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

在列表中,我想用“for循环使用这些访问的项目我的字典里',我会将这些项目添加到新列表中。我的字典是这样的:

my_dict = {1:"A", 2:"B", 3:"C" ... 26:"Z", 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”的密钥并将该密钥存储在列表中。

+0

哪里都是'number_value'和'键定义? –

+0

..你为什么要做'key.index(i)'?你期待在信中看到什么结果? – SuperSaiyan

+0

@SuperSaiyan固定。对不起,我很困惑 – Kyle

回答

2

您可以简单地用一个list comprehension,你含蓄地通过你的号码my_list的列表循环和检索值使用相应数量的一个关键组成你的字典my_dict

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'] 

请确保检查KeyError,因为您的清单my_list可能包含字典my_dict中未显示的数字。如果你想避免明确的异常处理(默默忽略丢失的钥匙),你可以做这样的事情:

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

谢谢!它的工作 – Kyle

1

你剪断的代码似乎并不因为你正在使用的不是定义的变量number_values是完整的在你的例子中。 编辑:你仍然使用的代码中没有定义的变量剪断你提供,所以我不能重现你的错误。另外你每次

覆盖你third_listmy_newlis我认为在my_list键也存在于my_dict:如果不这样做的@jbndlr告诉你,检查KeyError

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

是的,它来自我正在处理的代码的提取,我不得不简化变量名称,因为我在代码中有很多代码,当代码完成时,我将通过https将它上传到我的GitHub: //github.com/Bluestormy/Python。干杯! – Kyle

1

其他人所指出的不一致您的代码示例中,轻快地忽略那些:)

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]