簡體   English   中英

如何在python的列表中列出在字典中找到的certian值的出現?

[英]How do I list occurrences of certian values found in a dictionary in a list in python?

dave = [{'date':'12/10/12','time':'09:12','created_by':'adam','text':'this'},
        {'date':'28/09/11','time':'15:58','created_by':'admin','text':'that'},
        {'date':'03/01/10','time':'12:34','created_by':'admin','text':'this and that'}]

如何獲取在created_by找到的值的列表。 (例如['adam','admin']

列表理解將很好地工作:

[ x['created_by'] for x in dave if 'created_by' in x ]

如果您絕對確定dave包含的每個字典中的鍵都是'created_by'則可以忽略if 'created_by' in x部分中的KeyError如果在這種情況下缺少該鍵,則會引發KeyError

當然,如果您想要唯一的值,則需要確定順序是否重要。 如果順序不重要,則可以選擇set

set(x['created_by'] for x in dave if 'created_by' in x)

如果順序很重要,請參考此經典問題

您可以使用set factory僅返回唯一值,然后可以使用set list factory來獲取list :-

>>> set(x['created_by'] for x in dave)
set(['admin', 'adam'])

>>> list(set(x['created_by'] for x in dave))
['admin', 'adam']

將其放在集合中,然后返回列表...

list(set(d['created_by'] for d in dave))

列表理解的一個進步是對可能沒有'created_by'的項目使用if條件。 當處理混亂的數據時,通常需要這樣做。

list(set(x['created_by'] for x in dave if 'created_by' in x))
>>> ['admin', 'adam']

暫無
暫無

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

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