使用列表中的数字访问python中字典中的项目

时间:2016-09-27 07:02:31

标签: python list dictionary

我有物品:

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"并将密钥存储在列表中。

3 个答案:

答案 0 :(得分:2)

您只需使用list comprehension隐式循环遍历您的数字列表my_list,然后使用相应的数字作为关键字从{d} 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)

答案 1 :(得分: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

这会产生物品。如果您正在寻找别的东西,请告诉我,以便我可以调整答案

答案 2 :(得分: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]