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