【问题标题】:How to compare array entries to dictionary keys and return a dictionary value如何将数组条目与字典键进行比较并返回字典值
【发布时间】:2017-03-09 04:53:31
【问题描述】:

我正在尝试制作一个 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

【问题讨论】:

  • 至少贴出你目前写的代码。
  • 听起来您已经完成了大部分工作。你能提供你目前的代码吗?
  • 欢迎文字解释,您能否提供一些您尝试过的尝试?示例输入/输出?期望的结果?
  • For i in range (0,len(text)): for j in alphabet.keys(): if text[i].upper() == alphabet.values(): j+=1打印(alphabet.items())
  • 我无法在我的手机上正确格式化它,因为我目前正在工作并且我的笔记本电脑没有wifi

标签: python list for-loop dictionary


【解决方案1】:
for item in list_:
    try:
        print(d[item])
    except KeyError as e:
        print("{} not in d".format(e.args[0]))

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

【讨论】:

    【解决方案2】:

    您可能想使用string.maketransstring.translate

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

    【讨论】:

      【解决方案3】:

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

      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],如果letter 的值不是字典中的键,我会抛出KeyError,或者如果键不存在,translation_dict.get(letter) 将返回None。在下面的示例中,我使用了get(),但还添加了另一个参数(“not in 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)
      

      【讨论】:

        猜你喜欢
        • 2018-09-26
        • 1970-01-01
        • 1970-01-01
        • 2021-05-22
        • 2020-11-07
        • 1970-01-01
        • 1970-01-01
        • 2019-06-23
        • 1970-01-01
        相关资源
        最近更新 更多