Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django打印元组键控词典_Python_Django - Fatal编程技术网

Python django打印元组键控词典

Python django打印元组键控词典,python,django,Python,Django,我有一本以元组为键的字典。e、 g.:{('tags','1'):'name',('name','first'):'rik',('name','last'):'atee'} 例如,在django中,如何打印('name','first')处的值?我可以用dict.items.1或dict.items.2来实现这一点,但是排序就成了一个问题。字典中的任何值都可以通过它们相应的键来访问 所以 然而,元组作为键可能会变得混乱和容易出错,为什么不使用类似于{“tags”:['name'],“first”

我有一本以元组为键的字典。e、 g.:{('tags','1'):'name',('name','first'):'rik',('name','last'):'atee'}


例如,在django中,如何打印('name','first')处的值?我可以用dict.items.1或dict.items.2来实现这一点,但是排序就成了一个问题。

字典中的任何值都可以通过它们相应的键来访问

所以


然而,元组作为键可能会变得混乱和容易出错,为什么不使用类似于
{“tags”:['name'],“first”:'rik',“last”:'atee'}

Django模板语言有意限制您引用的内容

例如,您必须使用点运算符访问属性和字典元素,这意味着您引用的键必须是字符串

从文档:

变量名必须由任意字母(A-Z)、任意数字(0-9)、下划线(但不能以下划线开头)或点组成

您可以选择(a)使用视图将元组键转换为字符串格式,或者(b)使用不同的模板引擎,允许您使用任意键进行引用


选项(b)实际上并没有听起来那么糟糕,因为它们是Django的模板语言,设计为Django模板语言的超集,所以(理论上)所有旧模板都可以工作,您只需要获得更多功能。我建议您签出,它具有您想要的功能。

严重问题。为什么要使用元组作为键?严肃的回答:不要这样做。让你的视图函数将数据转换成模板可以轻松访问的表单——这是它首先应该做的。至于原因:我理解为什么你最终会得到这样的数据。我的观点是,模板永远不需要通过任意键访问数据。如果只需要打印
('name','first')
处的值,视图可以直接将该值传递给模板。如果需要按特定顺序打印字典中的所有值,请让视图按给定顺序创建一个值列表。虽然直接将从数据库中获得的数据传递到模板通常很方便,但没有理由期望这样做总是正确的。因为这是一个Django问题,我猜他是在寻找Django模板变量语法来实现这一点,而不是纯Python。@millimoose-correct。FWIW我使用元组作为键,因为这是pycassa数据库查询的输出。这看起来很奇怪,但它有很多优点。
>>> foo = {('tags','1'): 'name', ('name','first'):'rik', ('name','last'):'atee'}
>>> foo[('name','first')]
'rik'