我有一本名字和年龄的字典:
classmates = {'Anne':15, 'Laura':17, 'Michel':16, 'Lee':15, 'Mick':17, 'Liz':16}
我想选择所有带有字母" L"的名字。我可以这样做:
for name, age in classmates.items():
if "L" in name:
print(name)
或
Lnames = [name for name in classmates.items() if "L" in name]
当我有数百万条记录并且需要重复操作数百万次时,是否有更有效的方法?
答案 0 :(得分:1)
一张带有List Comprehension
的衬垫。
[ key for key in classmates.keys() if key.startswith('L') ]
In : classmates = {'Anne':15, 'Laura':17, 'Michel':16, 'Lee':15, 'Mick':17, 'Liz':16}
Out : ['Lee', 'Liz', 'Laura']
正如其他人所指出的那样,使用startswith
代替in
来查找角色是否在开头。
答案 1 :(得分:0)
在使用某种并行计算之前,搜索时间不会有任何影响。您可以使用@Kaushnik NP提到的过滤来过滤多个过程中的分割数据块 因此,您必须将字典拆分为4个较小的字典(取决于处理器所具有的核心数),在每个块上运行一个工作人员并将您的公共数据存储在某处。 这是一个片段,它使用多处理python库和队列来安排一些工作并存储该工作的结果:
:tag
有关该主题的其他示例,use that link