循环使用List中的项目以返回字典值Python

时间:2014-11-25 17:03:08

标签: python list for-loop dictionary printing

我有以下基本工作,但我正在努力与最终印刷。它调用文本文件中保存的数据,条目如下:

I,ngaju
dance,juka-pinyi

代码读取用户输入并将其与文本文件填充的字典进行比较,以便从英语翻译为原住民。到目前为止一切顺利,但是当我输入多个用户输入词时,它只返回原住民的最后一个单词。所以,我跳舞'只打印' 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()   

编辑:

感谢您的评论。它现在正在处理已解决的小写问题和缩进,但是在单独的行上返回单词。只需要研究如何让它在同一条线上打印出来!

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() 

3 个答案:

答案 0 :(得分:2)

我跳舞 - 显然会返回juka-pinyi,因为'我'不在字典中而且你用户输入的内容较低:)

否则,代码似乎没问题。我假设这是一个错字,最后一行错误地缩进。

答案 1 :(得分:2)

您所包含的字典摘录意味着这些条目区分大小写。对str.lower()的调用将阻止单词" I"从而被匹配,因为它在用户输入之后变得扁平化为小写。如果你的意图是强迫所有内容都是小写的,我建议你把字典初始化代码更改为:

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

答案 2 :(得分:2)

你的字典是这样的:

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

并且您的输入是'我跳舞',但您使用此功能将每个单词转换为小写:

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

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

dictionary[english.lower()] = aboriginal

而不是:

dictionary[english] = aboriginal

或者你需要输入输入而不使用它将其转换为小写:

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

而不是:

word = input('English: ').lower().split()
相关问题