python - 如果给定的字符串与字典中的键匹配,如何返回键的值
问题描述
例如,我有一个字典,我想使用该字符串"apple"
并返回字符串中每个给定字母的字典中的相应值:
'dot-dash-dot-dash-dash-dot-dot-dash-dash-dot-dot-dash-dot-dot-dot'
morse_dict = {
'a': 'dot-dash',
'b': 'dash-dot-dot-dot',
'c': 'dash-dot-dash-dot',
'd': 'dash-dot-dot',
'e': 'dot',
'f': 'dot-dot-dash-dot',
'g': 'dash-dash-dot',
'h': 'dot-dot-dot-dot',
'i': 'dot-dot',
'j': 'dot-dash-dash-dash',
'k': 'dash-dot-dash',
'l': 'dot-dash-dot-dot',
'm': 'dash-dash',
'n': 'dash-dot',
'o': 'dash-dash-dash',
'p': 'dot-dash-dash-dot',
'q': 'dash-dash-dot-dash',
'r': 'dot-dash-dot',
's': 'dot-dot-dot',
't': 'dash',
'u': 'dot-dot-dash',
'v': 'dot-dot-dot-dash',
'w': 'dot-dash-dash',
'y': 'dash-dot-dash-dash',
'z': 'dash-dash-dot-dot'
}
a = tuple("word")
for x in a:
return("-".join([val for keys, val in morse_dict.items() if x in keys]))
我在这里做错了什么?
解决方案
我不确定如何解释你到底做错了什么,因为你似乎让这变得不必要地复杂了。
标题问题的答案,
如果给定的字符串与键匹配,如何返回键的值
就是利用字典的基本特性,一键查找:
>>> morse_dict = {'a': 'dot-dash', ...}
>>> morse_dict['a']
'dot-dash'
KeyError
如果字典中不包含键,这将引发异常。为避免这种情况,您有两种选择:
- 在尝试访问之前检查密钥是否在字典中
- 使用
.get
方法而不是[]
查找,它允许指定在键不存在时返回的默认值。
我认为在您的情况下,默认值不会有帮助,因为未知字母的莫尔斯电码是什么?如果您选择使用空字符串''
作为默认值,您最终会得到一个包含--
.
因此,当使用第一个选项时,您想要做的事情可以简单地写成:
'-'.join(morse_dict[letter] for letter in word if letter in morse_dict)
即,对于单词中的每个字母,查找相应的莫尔斯电码(已经由 组成dash
或dot
连接-
),然后将它们全部连接起来-
,并忽略没有莫尔斯电码的字母。
推荐阅读
- python - 如何运行这个必须检查 2 x 10^25 组合的 python 程序?
- excel - 如何:根据表格外单元格中设置的值在公式中动态选择表格字段名称
- c# - 我正在从 ADAL 迁移到 MSAL 并收到无效范围错误
- flutter - 如何在颤动的圆形路径的末端角落应用阴影
- python - 在两个 Python 程序之间共享数据的最快方法是什么?
- c++ - 在 C++ 中对类对象向量起作用的函数
- javascript - 将 index.js 中的 req,res 传递给 Node 中的另一个 js 文件
- flutter - 是否有解决错误“无法无条件访问属性'isEmpty',因为接收者可以是'null'。”
- python - 带有 XMLTestRunner 的单元测试未按预期工作
- java - 如何使用 JDBCTemplate 在选择操作期间避免死锁