[英]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.