我的清单如下:
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_old
dict
接受元组列表,因此您可以只使用原始列表:实际上,您在调用
zip
时也在做同样的事情另外,如果所有的键都是数字,并且不是很大,那么您可以将它们全部放入数组中。索引将是关键。尽管此解决方案取决于实际任务,在某些情况下可能没有用处
内置的
dict
函数接受元组列表,这正是您所提供的:如果您只需要检查项目是否存在,请考虑使用
set
,因为i in my_set
比i in my_dict.values()
、see the Python documentation on performance要快得多,以获取更多信息。例如,在我的机器上,在一个包含10k条目的大草堆中查找是.443s
和dict.values()
,而不是<.000s
和set
。如果需要将值与条目相关联,则使用字典,否则使用集合。要更深入地研究列表与字典(以及大多数情况下的集合),请参阅this answer。你知道吗相关问题 更多 >
编程相关推荐