(所以我有一组游戏关卡,可以说是level1-level10。
我有一个名为level_up()的函数,并且在内部有一个字典,该字典用于将“级别名称”分组为要存储在json文件中并稍后使用的键,以及一个值,该值是要调用的函数
所以看起来是这样的:
async
一直下降到第十级。
我会尝试像这样调用函数:
futures
这当然会导致错误 TypeError:“ function”和“ function”的实例之间不支持“ <”
我想只列出两个列表会更容易,但是出于学习目的,我想看看我是否可以使此函数简洁明了,因此随时提出建议。
答案 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