python Django搜索和获取词典

2024-04-28 12:02:35 发布

您现在位置: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找到一个有slugmy-slug的。你知道吗

我怎样才能找到包含这个词的整本词典?你知道吗


Tags: textcomidhttpurldataobjectstitle
3条回答

您可以使用^{}

>>> 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'}]

另外,如果数据集很大,最好使用^{},因为它不会创建新的列表,而是生成器:

>>> 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

也许是这边?你知道吗

>>> objs = [{'slug': 'my-slug', ...},{'slug': 'xxx', ...}, ...]
>>> (filter(lambda o: o['slug'] == 'my-slug', objs) or [None])[0]
{'slug': 'my-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

相关问题 更多 >