-1

使用这样的列表推导,可以从字典列表中的键中提取特定值:

ke = [d['_text'] for d in ls if '_text' in d]

是否可以一次提取两个值并将它们存储为具有一个列表理解的元组?

所以是这样的:

ke = [(d['_text'] + e['url']) for (d,e) in ls if '_text', 'url' in d,e]

编辑:对不起,我没有发布一个例子:

ls =[{'_text': 'hello', 'url': 'xxx-444.html'}, {'_text': 'bye', 'url': 'xxx-222.html'}]

期望输出:

ke = [('hello', 'xxx-444.html'), ('bye', 'xxx-222.html')]
4

2 回答 2

2

试试这个 :

>>> ls =[{'_text': 'hello', 'url': 'xxx-444.html'}, {'_text': 'bye', 'url': 'xxx-222.html'}]
>>> ke = [(d.get('_text'), d.get('url')) for d in ls]
>>> ke
[('hello', 'xxx-444.html'), ('bye', 'xxx-222.html')]

即使'_text''url'键不在任何字典中,它也可以处理,并且在这些情况下NoneType将被添加到元组中。就像以下情况一样,最后一个字典不包含'url'键,None而是代替那个:

>>> ls =[{'_text': 'hello', 'url': 'xxx-444.html'}, {'_text': 'bye', 'url': 'xxx-222.html'}, {'_text' : 'world'}]
>>> ke = [(d.get('_text'), d.get('url')) for d in ls]
>>> ke
[('hello', 'xxx-444.html'), ('bye', 'xxx-222.html'), ('world', None)]
于 2019-11-21T14:15:54.107 回答
-1

当然。

ke = [(d['_text'], e['url']) for d in ls for e in ls if '_text' in d and 'url' in e]

尽管这在概念上应该可行,但请分享一个可验证的示例。

于 2019-11-21T13:53:45.747 回答