6

我正在提取一组图片网址及其各自的标题。我试过创建一个散列或关联数组,但数据似乎被覆盖了,所以我只得到了数组中的最后一项。

例如;

thumbnail_list = []
for file in media:
    thumbnail_list['url'] = file.url
    thumbnail_list['title'] = file.title

我什至尝试过创建两个列表并将它们放在一个更大的列表中。

thumbnail_list.append('foo')
thumbnail_urls.append('bar')
all_thumbs = [thumbnail_list], [thumbnail_urls]

我正在尝试从这些数据中创建一个链接:

<a href="image-url">image title</a>

我不断接近,但我最终在我的 django 模板中一次循环了太多数据或所有数据。

想法?

编辑:也许 zip() 是我需要的?

questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
    print 'What is your {0}?  It is {1}.'.format(q, a)
4

1 回答 1

5

您需要一个dict,它是 Python 的关联数据结构,而您正在创建一个列表。

但我不确定我是否理解你的问题。为什么不直接将您的media集合传递到模板中并像这样迭代:

{% for file in media %}
    <a href="{{ file.url }}">{{ file.title }}</a>
{% endfor %}

编辑

根据您的评论,我现在认为您正在寻找这样的东西:

thumbnail_list = []
for file in media:
    file_info = {}
    file_info['url'] = file.url
    file_info['title'] = file.title
    thumbnail_list.append(file_info)

{% for file in thumbnail_list %}
    <a href="{{ file.url }}">{{ file.title }}</a>
{% endfor %}

您可以创建一个列表,然后为每个文件在处理完 URL、标题或其他内容后将字典附加到该列表中。

或者,您可以创建自己的类来更好地封装它,以防您有其他逻辑要应用:

class FileInfo(object):
    def __init__(self, file):
        self.url = file.url # do whatever
        self.title = file.title # do whatever

thumbnail_list = []
for file in media:
    thumbnail_list.append(FileInfo(file))
于 2010-02-24T00:07:13.670 回答