[英]How to read and store values from a text file into a dictionary. [python]
[英]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
語句中的代碼執行以下操作:
morse
中存在的任何鍵,返回匹配值 使用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.