首页 > 解决方案 > 如何调用可以是整数或函数的字典项?

问题描述

我正在尝试编写一个代码,该代码将对桌面游戏中的一个单元进行统计分析以供个人使用。我正在使用字典来存储单位数据,我遇到了一个问题,攻击造成的伤害可以是整数值,也可以是掷骰子“d6”的结果

我创建了一个函数,它取 d6 的值并将其评估为 d(6),然后运行简单的计算来确定平均射击次数 3.5。为方便起见,我希望能够将“d(6)”保留在字典中,而不是为我要输入的每个单位手动转换为 3.5。

在一个非常精简的单元字典示例中,

unit = {'damage':1}

或者

unit = {'damage':'d(6)'}

我正在寻找一种方法来检查“损坏”调用是否该值是一个整数或字符串,然后如果它是一个字符串,则从中去掉引号并将其作为函数进行评估。我在搜索中运气不佳,因为我真的不知道我在搜索什么。

标签: pythonfunctiondictionary

解决方案


使字典中的每个值都保持一致并返回一个您可以调用的 lambda 函数,该d函数在被调用之前不会被评估。

>>> unit = {'damage': lambda: 1, 'b': lambda: d(6) }
>>> unit['damage']()
1
>>> unit['b']()
result of d(6)

推荐阅读