python - 如何编写 key(get,default) 方法?
问题描述
我的代码
def awsmatc(input_string):
my_dict = {'ticr_calculated_2': 'ticr-2.parquet', 'ticr_calculated_3': 'ticr-3.parquet', \
'ticr_calculated_4': 'ticr-4.parquet', 'tick_calculated_2': 'tick-2.parquet', \
'tick_calculated_3': 'tick-3.parquet', 'tick_calculated_4': 'tick-4.parquet'}
for key, value in my_dict.items():
if any(key in input_string):
return value
i = 'tick_calculated_2_2020-05-27T00-01-21.json'
awsmatc(i)
我想将每个键与输入字符串进行比较,如果它们匹配,则选择相应的值。
我有
File "scratch_3.py", line 7, in awsmatc
if any(key in input_string):
TypeError: 'bool' object is not iterable
如何编写字典 get(key[, default]) 方法?我不喜欢使用正则表达式模式,当我稍后编写该方法时它会变得太慢。
解决方案
如上所述,如果您只想找到一个匹配值,请删除any
关键字。如果要返回具有匹配键的所有值的列表,可以使用列表推导式来完成:
def awsmatc(input_string):
my_dict = {'ticr_calculated_2': 'ticr-2.parquet', 'ticr_calculated_3': 'ticr-3.parquet', \
'ticr_calculated_4': 'ticr-4.parquet', 'tick_calculated_2': 'tick-2.parquet', \
'tick_calculated_3': 'tick-3.parquet', 'tick_calculated_4': 'tick-4.parquet'}
return [value for key, value in my_dict.items() if key in input_string]
i = 'tick_calculated_2_2020-05-27T00-01-21.json'
print(awsmatc(i))
作为旁注,您最好在函数之外定义字典,以阻止它被重新定义,然后在每次调用函数时进行垃圾收集。
推荐阅读
- caching - 如何配置 Drupal 以发送 Last Modified/Etag 标头
- tfs - 有没有办法让用户无需成为集合管理员就可以在 TFS-Azure DevOps 上创建自己的项目?
- vue.js - Vuetify 数据表手表不触发
- scala - Kafka Streams:配置“AdminClientConfig”或“ConsumerConfig”而不覆盖两者的值
- python - 如何在我的分布式项目中运行网络服务器模块?
- h2o - 错误:H2o 自动编码器训练中的模型很大
- excel - 如何隐藏行中没有数据的行
- php - 修复预期的数组但得到了对象?
- python - 无法使用 bs4 从 BSE 网站上抓取特定信息
- c# - 服务器上的缩略图 - GDI+ 中出现一般错误