使用字典来重构if查询

问题

def func(parameter):
    if parameter == '0001':
        return '小明'
    elif parameter == '0002':
        return '小红'
    elif parameter == '0003':
        return '小马'
    elif parameter == '0004':
        return '晴晴'
    elif parameter == '0005':
        return '纳米'
    else:
        raise NameError('未查询到此人')

重构以上代码,必须保证其功能一致。

分析问题

此问题使用了if...elif...else来尝试查询键值对数据,不仅低效繁琐,还可读性差,使用字典结构就能优雅高效地存放和查询此类数据。

另外,数据与逻辑要区分开,这样逻辑就能更方便地统一处理,数据也能统一修改。

对于根据键获取值的方式,可以使用索引,也可以使用get()方法,但使用get()方法更加简洁些。

重构

先将数据转到字典:

def func(parameter):
    base = {
        '0001': '小明',
        '0002': '小红',
        '0003': '小马',
        '0004': '晴晴',
        '0005': '纳米'
    }

然后编写查询逻辑,只需要3行:

def func(parameter):
    base = {
        '0001': '小明',
        '0002': '小红',
        '0003': '小马',
        '0004': '晴晴',
        '0005': '纳米'
    }
    if name := base.get(parameter):
        return name
    raise NameError('未查询到此人')

需要注意的是,这里使用了:=运算符,既能赋值又可以条件判断,非常地好用。(赞赏)

注意:
除非另有声明,本文可以自由使用、转载和二次创作,但需注明作者,并以相同许可协议分享,且不得用于商业目的。详情请参阅:CC BY-NC-SA 4.0许可协议。

- 标题:使用字典来重构if查询
- 作者:Pinpe
- 链接:https://blog.pinpe.top/4484/
成为第一个评论的人吧!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
呼呼
上一篇