簡體   English   中英

Python 3.6字典。 一次從輸入中獲取值

[英]Python 3.6 Dictionary. Get values from input at once

幾個星期以來,我一直在學習python 3.6,卻偶然發現了一個有關莫爾斯字典示例的教程

有一個像這樣的字典:

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

使用我的以下代碼,可以輸入一個字母並在stdout獲得匹配的莫爾斯電碼:

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

這會導致錯誤,不管我輸入的是AB還是AB (我認為.split()的默認分隔符是\\ w,

TypeError: unhashable type: 'list'

我還嘗試了是否可以繼續使用dict.get()或dict.update()。 我認為必須有一種簡單的方法來做到這一點,還是? ;)目標是迭代輸入嗎?

感謝您的幫助

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

(在Python 2中使用raw_input

您不需要使用split或if語句。 檢查這是否適合您:

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

如果您希望所有字母都在同一行上循環,則可以將它們附加到列表中或將它們添加到空字符串中,然后在循環末尾打印,如下所示:

while 1:
    result = ""
    entry = input("letters: ")
    for i in entry:
        if i in morse:
            result += morse[i]
    print(result)

也許:

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

word = input("word:")

print(','.join(morse[letter] for letter in word if letter in morse))

作為說明, print語句中的代碼執行以下操作:

  1. 遍歷輸入字符串
  2. 對於morse中存在的任何鍵,返回匹配值
  3. 將所有返回的值建立到列表中
  4. 用逗號連接列表元素(摩爾斯字符)

使用dict.get()基本上是:dict.get(按鍵值,如果未找到值)。 如果找不到,則值可以為空字符串""

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

myinp = "ABCA2"

print(','.join(morse.get(i,'') for i in myinp))

返回值:

'.-,-...,-.-.,.-,'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM