簡體   English   中英

從Python中的列表元素創建字典

[英]Create dictionary from list elements in Python

我有一個類似於以下內容的列表:

my_list =
    [(1, 'item_19'),
     (2, 'item_20'),
     (3, 'item_21'),
     (4, 'item_22'),
     (5, 'item_23'),
     (6, 'item_24'),
     (7, 'item_25'),
     (8, 'item_26'),
     (9, 'item_27'),
     (10, 'item_28'),
     (11, 'item_29'),
     (12, 'item_30'),
     (13, 'item_31'),
     (14, 'item_32'),
     (15, 'item_33'),
     (16, 'item_34'),
     (17, 'item_35')]

我想為列表中的每個元素制作一個字典,即1:'item_19',2:'item_20'

我目前正在這樣做:

list_1 = [l[0] for l in my_list]
list_2 = [l[1] for l in my_list] 

然后壓縮兩個列表

my_dict = dict(zip(list_1,list_2))

但是, my_list中有超過一百萬個元素,所以這是執行此操作的最佳方法,還是有一種更快/更優化的方法(在內存方面)。

為了說明這一點,我希望查找表檢查my_dict元素my_dict已存在於其他字典my_dict_old

內置的dict函數接受一個元組列表,這正是您所提供的:

>>> list_foo = [(1, 'item_1'), (2, 'item_2')]
>>> dict(list_foo)
{1: 'item_1', 2: 'item_2'}

如果您需要做的只是檢查項目的存在,請考慮使用set ,因為i in my_set中的i in my_dict.values()i in my_dict.values()有關性能的更多信息, 請參見Python文檔 例如,在我的機器上,在1萬個條目的.443s的查找為.443s ,而.443s dict.values() <.000s對於set 如果需要將值與條目關聯,則使用字典,否則使用集合。 要更深入地檢查列表與字典(以及大多數情況下也包含字典),請參閱此答案

dict接受元組列表,因此您可以使用原始列表:

my_dict = dict(my_list)

而且您實際上在調用zip在做同樣的事情

另外,如果所有鍵都是數字並且不是很大,則可以將它們全部放入數組。 索引將是關鍵。 盡管此解決方案取決於實際任務,在某些情況下可能無用

暫無
暫無

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

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