python - 如何在不使用 long if else 语句的情况下替换 python 字典中的值
问题描述
这是包含字典的列表,代码块有效我只是想要一种更pythonic的方式来实现这一点。代码检查是否满足条件并重新分配一个新值。
for items in waytypes:
if items['value'] == 1:
items['value'] = 7
elif items['value'] == 2:
items['value'] = 7
elif items['value'] == 3:
items['value'] = 4
elif items['value'] == 4:
items['value'] = 7
elif items['value'] == 5:
items['value'] = 7
elif items['value'] == 6:
items['value'] = 10
elif items['value'] == 7:
items['value'] = 4
elif items['value'] == 8:
items['value'] = 2
elif items['value'] == 9:
items['value'] = 1
else:
if items['value'] == 10:
items['value'] = 2
解决方案
您可以使用字典来保存所需的映射:
mapping = {1:7, 2:7} # just complete it
然后您将能够根据映射进行转换:
for items in waytypes:
items['value'] = mapping.get(items['value'],items['value'])
作为get()
函数中的第二个参数,您可以使用默认值,以防items['value']
映射中不存在。例如,您可以分配相同的值,以防它在映射中不存在:
mapping.get(items['value'],items['value']) # the value will remain the same.
推荐阅读
- java - 在 Spring Boot 和 Thymeleaf 中解析模板名称时出错
- r-markdown - xaringan都会主题幻灯片标题字体大小
- c# - JsonSerializationException 解析
- javascript - Javascript将文件从网页上传到特定的谷歌驱动器帐户
- php - 我使用 netbeans,我想运行我的 PHP 应用程序,我已经在我的机器上安装了 xampp 和 wampserver
- python - 使用套接字在python中发送数据
- java - 在 JPA 中对具有多对多关系的对象执行 NOT IN QUERY
- javascript - 当 CKEditor mangles 时,如何在其中包含带有 HTML 的工具提示
- python - Python Click:如何打印有关使用错误的完整帮助详细信息?
- javascript - 我的函数中的逻辑错误阻止 count++ 工作