如何将数组条目与字典键进行比较并返回字典值

时间:2016-10-26 17:40:06

标签: python list for-loop dictionary

我正在尝试创建一个python程序,它接受用户输入文本或文件,并将每个字符更改为值,然后返回结果。 我有一个用户字符串被读入列表。 我试图让一个for循环遍历该列表,并根据字典键检查每个字符,然后返回字典中的值。我该怎么做呢? 感谢

到目前为止

代码:

for i in range (0, len(text)): 
    for j in alphabet.keys(): 
        if text[i].upper() == alphabet.values(): 
            j+=1
            print(alphabet.items()) 
    i+=1

3 个答案:

答案 0 :(得分:0)

for item in list_:
    try:
        print(d[item])
    except KeyError as e:
        print("{} not in d".format(e.args[0]))

如果没有看到您的代码,我就无法提供更相关的内容

答案 1 :(得分:0)

您可能想要使用string.maketransstring.translate

>>> import string
>>> table = string.maketrans('abc', 'xyz')
>>> string.translate('the cat is bad', table)
'the zxt is yxd'

答案 2 :(得分:0)

下面的大多数代码只是创建一个字典,它将输入的字母翻译成字典中的随机对应值(即每个字母映射到另一个随机字母)。关于代码的要点:

1)range()自动默认从0开始,因此range(0, n)最好只写为range(n)

2)您根本不需要使用range()for letter in string将采用输入字符串并逐字逐句查看。 for elephant in string也会这样做,每个字母依次被分配到名称elephant,因此我选择使用letter的事实只是为了便于阅读。

3)使用keys()values()items()不是查询字典的方法。你有两种标准方法;我可以使用translation_dict[letter]如果KeyError的值不是字典中的键,则会抛出letter,如果密钥,translation_dict.get(letter)会返回None不存在。在下面的示例中,我使用get()但还添加了另一个参数(“不在dict中”),如果找不到该字母作为键,则将None替换为默认值。

import string # For setup of example data
import random # For setup of example data

# Just creating the translation dictionary and fake user input
alphabet = list(string.uppercase)
translated = random.sample(alphabet, len(alphabet))
translation_dict = {i: j for i, j in zip(alphabet, translated)}

user_input = 'Hello'

# The loop you're trying

for letter in user_input:
    corresponding_value = translation_dict.get(letter.upper(), 'Not in dict')
    print(corresponding_value)