簡體   English   中英

如何基於字典中的元素創建列表?

[英]How to create list based on elements from dictionary?

我有以下詞典列表:

L = [{'code': 'UE', 'country': 'France'}, {'code': 'AM', 'country': 'canada'}, {'code': 'AF', 'country': 'morocco'}]

是否有任何方法可以檢索按以下方式排序的代碼列表: codes = ['AF', 'AM', 'UE']

您可以將生成器傳遞給sorted

>>> codes = sorted( d['code'] for d in L )
>>> codes
['AF', 'AM', 'UE']

另一個選擇是將列表理解傳遞給sorted ,@MartijnPieters在這種情況下顯示出更快。

codes = sorted([ d['code'] for d in L ])

使用列表理解選擇所需的鍵,然后將值傳遞給sorted()函數

codes = sorted([d['code'] for d in L])

演示:

>>> L = [{'code': 'UE', 'country': 'France'}, {'code': 'AM', 'country': 'canada'}, {'code': 'AF', 'country': 'morocco'}]
>>> sorted([d['code'] for d in L])
['AF', 'AM', 'UE']

在這里,列表理解比生成器表達式快:

>>> from timeit import timeit
>>> timeit("sorted(d['code'] for d in L)", 'from __main__ import L')
2.1713640689849854
>>> timeit("sorted([d['code'] for d in L])", 'from __main__ import L')
0.9132740497589111

sorted()需要一個列表進行排序,因此您可以給它一個列表,也可以從iterable中構建一個列表。 從生成器表達式構建列表比(首先)為其提供列表的效率低很多。

sorted()函數與列表理解一起使用:

>>> L = [{'code': 'UE', 'country': 'France'}, {'code': 'AM', 'country': 'canada'}, {'code': 'AF', 'country': 'morocco'}]
>>>
>>> sorted([d['code'] for d in L])
['AF', 'AM', 'UE']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM