2

加权有向图在 python 中表示为字典的字典。像这样的东西(示例):

digraph = {'a': {'b':2, 'c':3}, 'b': { 'a':1, 'd',2}}

我的问题涉及将此 digraph 对象传递给 Django 模板系统。在此示例中,“a”、“b”、“c”、“d”是图的节点,有向图表示这些节点之间的连接以及由整数值给出的每个连接边的权重。

考虑一个通用节点:node

我在访问模板时遇到困难:digraph.node.items,在模板内。对于任何字典 D,D.items 都可以很好地工作。但当我们想要访问子词典的项目时(在上面的有向图中),则不然。这正是我想要的(但效果不佳):

{% for node in node_list %}
  {% for adj_node,weight in digraph.node.items %}
    {{ adj_node }}, {{ weight }} <br/>
  {% endfor %}
{% endfor %}

不打印adj_nodeweight 。

4

1 回答 1

1

可以选择定义自己的过滤器以从字典中提取感兴趣的值:http ://ralphminderhoud.com/posts/variable-as-dictionary-key-in-django-templates/

简短版本:

project/app/templatetags/dictionary_extras.py

from django import template
register = template.Library()

@register.filter(name='access')
def access(value, arg):
    return value[arg]

urls.py

url(r'^testing', 'views.vTestingLists', name='testing_lists'),

views.html

def vTestingLists(request):
    context= {'d': {'a':'apple', 'b': 'banana', 'm':'mango', 'e':'egg', 'c':'carrot'}}
    return render_to_response( 'testinglists.html', context )

在名为的模板中testinglists.html

{% load dictionary_extras %}
{% for key in d %}
    {{ d|access:key }}
{% endfor %}

然后访问…/testingURL 以查看您的手工制作的结果。

这不是我的代码,全部归功于 Ralph Minderhoud(链接文章的作者)。我已经验证此代码可以从这个答案转录(不是复制/粘贴)到我的 Django 1.1 环境。

于 2013-10-28T01:59:15.543 回答