Python 3.6字典。立即从输入中获取值

时间:2017-11-27 22:21:12

标签: python dictionary

我几周后学习python 3.6并偶然发现tutorial 莫尔斯词典的例子。

有一个字典,如:

morse = {
"A" : ".-", 
"B" : "-...", 
"C" : "-.-.", 
"D" : "-..",
...
...}

使用我的以下代码,可以输入一个字母,然后输入匹配的莫尔斯代码:

while 1:
    entry = input("letter: ")
    if entry in morse:
        result = morse[entry]
        print(result)

与以下行为相同:

while 1:
    entry = input("letter: ")
    for i in entry:
    print(morse[entry])

我想要的是输入完整的单词或句子,并在stdout中为每行输入的莫尔斯代码获取莫尔斯代码

letter: ABC
.-,-...,-.-.

我认为以下可能有效(但它没有......)。

 #result is new dic for the resulting key:values
  result = {}
  while 1:
      entry = input("letter: ")
      if entry in morse:
          result = morse[entry]
          print(result)
      else:
          for i in entry:
              i = entry.split()
              print(morse[i])

导致错误,如果我输入ABA B.split()默认分隔符是\ w,我认为不在乎)

TypeError: unhashable type: 'list'

如果我可以使用dict.get()或dict.update(),我也试过了。 我认为必须有一个简单的方法来做到这一点,或者? ;) 目标是迭代输入吗?

我感谢任何帮助

1 个答案:

答案 0 :(得分:1)

>>> morse = {
... "A" : ".-", 
... "B" : "-...", 
... "C" : "-.-.", 
... "D" : "-.."}
>>> print(','.join(morse[x] for x in input() if x in morse))
AXBC
.-,-...,-.-.

(在Python 2中使用raw_input