Python - 如何根据另一个dics列表过滤dics列表

时间:2017-11-16 19:27:37

标签: python python-2.7 filtering

你能不能给我一些建议,如何加速Python中的事情

我当前的问题 - 代码有效 - 但是吃了所有内存 - 因为我有2个包含for循环(

所以 - 我有两个dicts列表,需要根据下面的逻辑过滤它。

  count = 0
  size = 0
  latest = dateutil.parser.parse('1900-01-01T00:00:00.000')

  for obj_seg in objects_segments[1]:
    exclude = False
    for obj in objects[1]:
      if obj['name'] in obj_seg['name']:
        exclude = True
        break

    if not exclude:
      d = dateutil.parser.parse(obj_seg['last_modified'])
      if d > latest:
        latest = d
      size+=obj_seg['bytes']
      count+=1

" objects_segments [1]"最多可包含30M元素和"对象[1]" - 高达100K ......

使用此类数据进行操作的更好方法包括for_loop(

UPD1:更改布尔逻辑并将中断添加到第二个周期。 Tnx @nthall

1 个答案:

答案 0 :(得分:1)

嗯,一个简单的改进就是在设置exclude = False后停止内循环 - 现在你将不必要地继续循环。

for obj in objects[1]:
  if obj['name'] not in obj_seg['name']:
    exclude = False
    break