【问题标题】:Looping over items in a List to return Dictionary Values Python循环遍历列表中的项目以返回字典值 Python
【发布时间】:2015-01-23 19:14:14
【问题描述】:

我有以下基本工作,但在最终打印时遇到了困难。它调用文本文件中保存的数据,其中包含以下条目:

I,ngaju
dance,juka-pinyi

代码读取用户输入并将其与由文本文件填充的字典进行比较,以将英语翻译成土著语。到目前为止一切都很好,但是当我输入多个用户输入的单词时,它只会返回 Aboriginal 中的最后一个单词。所以“我跳舞”只打印“juka-pinyi”。我做错了什么?!

dictionary = {}

for line in open('dictionary.txt'):
  english, aboriginal = line.strip().split(',')
  dictionary[english] = aboriginal

word = input('English: ').lower().split()

while word != []:
  for item in word:
    if item in dictionary:
     print (dictionary[item])
      word = input('English: ').lower().split()   

编辑:

感谢 cmets。它现在正在解决小写问题和缩进,但在不同的行上返回单词。只需要研究如何让它在同一行打印它们!

dictionary = {}
for line in open('dictionary.txt'):
  english, aboriginal = line.strip().split(',')
  dictionary[english.lower()] = aboriginal

word = input('English: ').lower().split()

while word != []:
  for item in word:
    if item in dictionary:
      print (dictionary[item])
  word = input('English: ').lower().split() 

【问题讨论】:

    标签: python list for-loop dictionary printing


    【解决方案1】:

    你的字典是这样的:

    {'I':'ngaju','dance':'juka-pinyi'}
    

    您的输入是'I dance',但您正在使用以下方法将每个单词转换为小写:

    word = input('English: ').lower().split()
    

    这使得输入为'我跳舞'。因此它只能在字典中找到 'dance' 并被翻译。您需要使用以下方法仅用小写字母填充字典:

    dictionary[english.lower()] = aboriginal
    

    代替:

    dictionary[english] = aboriginal
    

    或者您需要在不将其转换为小写的情况下接受输入:

    word = input('English: ').split()
    

    代替:

    word = input('English: ').lower().split()
    

    【讨论】:

      【解决方案2】:

      您包含的字典摘录暗示这些条目区分大小写。对 str.lower() 的调用将阻止单词“I”被匹配,因为它在用户输入后被压扁为小写。如果您的意图是强制所有内容为小写,我建议您将字典初始化代码更改为如下内容:

      for line in open('dictionary.txt'):
        english, aboriginal = [i.lower() for i in line.strip().split(',')]
        dictionary[english] = aboriginal
      

      【讨论】:

        【解决方案3】:

        我跳舞 - 显然会返回 juka-pinyi,因为 'i' 不在字典中,并且您是用户输入的小写 :)

        否则,代码看起来不错。我假设最后一行的缩进错误是一个错字。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-29
          • 2014-06-27
          • 2015-10-30
          相关资源
          最近更新 更多