python django - 搜索并获取字典

时间:2014-10-02 09:02:30

标签: python

data['objects']给了我这个:

[{u'id': 8299, u'title': u'Blablablabla text',
 u'url': u'http://www.youtube.com/watch?v=EuPBjf3jq_M', u'video_id': u'EuPBjf3jq_M', 
 u'slug': u'my-slug', u'thumbnail': u'/media/CACHE/images/bilder/2014/09/12/133107_VMi5c/656141a37cc52e347c14e4837d39c1e3.jpg'}, 
{...},{...}, ..]

上面有很多字典。我需要使用python找到具有slug my-slug的那个。

如何搜索并获取包含此slug的整个字典?

3 个答案:

答案 0 :(得分:2)

您可以使用filter

>>> data = [{u'id': 8299, u'title': u'Blablablabla text',
 u'url': u'http://www.youtube.com/watch?v=EuPBjf3jq_M', u'video_id': u'EuPBjf3jq_M', 
 u'slug': u'my-slug', u'thumbnail': u'/media/CACHE/images/bilder/2014/09/12/133107_VMi5c/656141a37cc52e347c14e4837d39c1e3.jpg'}, 
{'slug': 'no'}, {'title': 'just_title'}]
>>> filter(lambda x: x.get('slug') == 'my-slug', data)
[{u'title': u'Blablablabla text', u'url': u'http://www.youtube.com/watch?v=EuPBjf3jq_M', u'video_id': u'EuPBjf3jq_M', u'slug': u'my-slug', u'id': 8299, u'thumbnail': u'/media/CACHE/images/bilder/2014/09/12/133107_VMi5c/656141a37cc52e347c14e4837d39c1e3.jpg'}]

此外,如果您的数据集很大,最好使用ifilter,因为它不会创建新列表,但生成器:

>>> from itertools import ifilter
>>> filtered_generator = ifilter(lambda x: x.get('slug') == 'my-slug', data)
>>> 
>>> filtered_generator
<itertools.ifilter object at 0x7f0830be7fd0>
>>> 
>>> for d in filtered_generator:
...     print d['slug']
... 
my-slug

答案 1 :(得分:1)

也许这样?

>>> objs = [{'slug': 'my-slug', ...},{'slug': 'xxx', ...}, ...]
>>> (filter(lambda o: o['slug'] == 'my-slug', objs) or [None])[0]
{'slug': 'my-slug'}

答案 2 :(得分:1)

制作具有该slug的对象列表:

right_slug = [obj for obj in data['objects'] if obj['slug'] == 'my-slug']

if len(right_slug) == 1:
    the_object = right_slug[0]
else:
    # Oh no, the slug occurred either 0 or more than 1 times!
    # do something here
    pass
相关问题