3

假设我有一个像这样的字典:

dic = {'1': 'string', 1 :'integer'}

当我将它传递给 django 模板并尝试访问dic.1时,它总是返回'string'.

如果我删除密钥'1',则dic.1返回'integer'

我知道我可以为此使用自定义标签,例如:

from django import template
register = template.Library()
@register.filter
def get_key(value, arg):
    return value.get(arg, None)

然后{{ dic|get_key:1 }}工作正常。

但是,有没有办法在不使用自定义标签的情况下直接访问整数/浮点键?

4

1 回答 1

2

请参阅提供的关于Dictionary access speed comparison with integer key against string key主题的答案。Python (CPython) 总是先尝试找到基于字符串的键,然后再尝试找到任何替代项。

可能有充分的理由将相似的字符串键与整数键混合,但我建议避免这种技术或将整数类型转换为字符串,以消除无法直接引用键值的问题。

于 2013-08-18T22:59:13.593 回答