簡體   English   中英

根據另一個列表過濾字典項

[英]Filtering dictionary items based on another list

我有一本以元組為鍵的字典(my_dict),也有一個我感興趣的值列表(my_list)。

我想創建一個新字典,在其中只保留元組和值的情況下,以用於元組的第一個元素包含在我的值列表中的情況。 有快速的方法嗎?

例如:

my_dict = {('1', '2'): 'a', ('1', '3'): 'b', ('2', '3'): 'c', ('3', '4'): 'd', ('4', '5'): 'a', ('4', '6'): 'b', ('5', '6'): 'e', ('6', '7'): 'f'}

my_list = ['1', '2', '6']

輸出應為:

my_new_dict = {('1', '2'): 'a', ('1', '3'): 'b', ('2', '3'): 'c', ('6', '7'): 'f'}

基本方法:帶有過濾器的dict comp:

In [807]: {k : v for k, v in my_dict.items() if k[0] in my_list}
Out[807]: {('1', '2'): 'a', ('1', '3'): 'b', ('2', '3'): 'c', ('6', '7'): 'f'}

如果您使用的是python2,則需要my_dict.iteritems()


為了提高效率,請將my_list轉換為set

my_set = set(my_list)
res = {k : v for k, v in my_dict.items() if k[0] in my_set}
print(res)

過濾時查找變得更加高效。

暫無
暫無

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

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