每次调用父函数时,如何从已排序的字典中调用函数?

时间:2019-01-27 22:06:55

标签: python python-3.x

(所以我有一组游戏关卡,可以说是level1-level10。

我有一个名为level_up()的函数,并且在内部有一个字典,该字典用于将“级别名称”分组为要存储在json文件中并稍后使用的键,以及一个值,该值是要调用的函数

所以看起来是这样的:

async

一直下降到第十级。

我会尝试像这样调用函数:

futures

这当然会导致错误 TypeError:“ function”和“ function”的实例之间不支持“ <”

我想只列出两个列表会更容易,但是出于学习目的,我想看看我是否可以使此函数简洁明了,因此随时提出建议。

2 个答案:

答案 0 :(得分:0)

没有“排序字典”之类的东西。明确一点。

这是一个可能的答案,我相信还有一种更漂亮的方法:

map(lambda i: i[1], sorted(levels.items(), key=lambda i: i[0]))

答案 1 :(得分:0)

为什么使用字符串作为键?更简单,无需排序:

import sys

def level1(): print(1)  
def level2(): print(2)
def level3(): print(3) 
def win(): 
    print("you won")                
    sys.exit()

curr_lvl = 1  # start here and advance

levels = { 1:level1, 2:level2, 3:level3}

while True:
    levels.get(curr_lvl,win)() # get func and call it
    curr_lvl += 1

输出:

1
2
3
you won

如果您确实需要一个“字符串”键,请对其进行处理:

def get_level(s):
    levels = { 1:level1, 2:level2, 3:level3, 4:level4, 5:level5}
    try:
        lvl = int(s.lstrip("level"))
    except ValueError:
        pass

    return levels.get(lvl,win)

get_level("level2")()  # prints 2