首页 > 解决方案 > 如何在不使用 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

标签: pythondictionaryif-statement

解决方案


您可以使用字典来保存所需的映射:

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.

推荐阅读