基于两个属性深度过滤字典列表

豪尔赫·利马斯

我试图找到一种有效的方法来处理这个问题。我有一个包含超过 40 万个条目的字典列表。我需要首先找到共享一个公共密钥的所有条目,假设从该列表中找到“pallet-id”,然后从该子列表中验证所有这些条目是否共享相同的“位置”密钥。我只对从初始列表中获取具有类似“pallet-id”的条目感兴趣,但前提是其中一个条目与其他条目的“位置”不同。

前任。

这将适用于托盘 ID 123456

entry1 = {'location': 'LOC1', 'pallet-id': '123456', ...}  
entry2 = {'location': 'LOC1', 'pallet-id': '123456', ...}  
entry3 = {'location': 'LOC1', 'pallet-id': '123456', ...}  
entry4 = {'location': 'LOC1', 'pallet-id': '123456', ...} 

由于所有共享相同的位置,我不在乎这一点。

这将适用于托盘 ID 5555

entry1 = {'location': 'LOC1', 'pallet-id': '5555', ...}  
entry2 = {'location': 'LOC1', 'pallet-id': '5555', ...}  
entry3 = {'location': 'LOC2', 'pallet-id': '5555', ...}  
entry4 = {'location': 'LOC1', 'pallet-id': '5555', ...}  

在这种情况下,由于一个位置不同,我想存储这 4 个条目。

我遇到的问题是,通过检查每个托盘 id 然后在初始列表中查找相同托盘 id 的其余部分,报告花费了无限量的时间,是否有更有效的方法来处理这个问题?

施沃巴塞尔

嵌套循环在这里是一个坏主意,因为它会导致二次时间复杂度。不过,您可以在线性时间内完成:

from collections import Counter
from operator import itemgetter

pal = itemgetter('pallet-id')
pal_loc = itemgetter('pallet-id', 'location')

# unique pallet-id, location combos
pallocs = set(map(pal_loc, entries))
# set([('5555', 'LOC1'), ('5555', 'LOC2'), ('123456', 'LOC1')])

# count pallet-id occurrences in the unique combos
count = Counter(pl[0] for pl in pallocs) 
# Counter({'5555': 2, '123456': 1})

# filter the entries for pallet-ids with counts greater than 1
filtered_entries = [e for e in entries if count[pal(e)] > 1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于角度过滤彼此的两个下拉列表

来自分类Dev

根据两个键过滤字典列表

来自分类Dev

如何基于公共属性加入两个列表

来自分类Dev

基于两个属性从列表中检索多个对象

来自分类Dev

如何按属性过滤两个 json 对象列表?

来自分类Dev

基于两个变量的Dplyr过滤

来自分类Dev

基于 Django 类的列表视图,带有两个过滤的单独列表

来自分类Dev

如何添加基于字典列表的两个Python数据集?

来自分类Dev

通过使用LINQ过滤两个列表来创建字典

来自分类Dev

通过使用LINQ过滤两个列表来创建字典

来自分类Dev

如何根据字符串值和两个日期过滤字典列表

来自分类Dev

使用两个列表生成字典

来自分类Dev

来自两个列表的Python字典

来自分类Dev

基于两个属性组合过滤掉pandas数据框

来自分类Dev

基于共同属性的两个(或多个)列表中的C#合并属性

来自分类Dev

使用purr的“ keep”或“ discard”以基于两个条件过滤列表

来自分类Dev

.find()基于两个属性的逻辑或

来自分类Dev

Linq SelectMany 基于两个属性

来自分类Dev

基于两个过滤器过滤Gtest

来自分类Dev

从两个列表中过滤元素

来自分类Dev

过滤两个列表f#

来自分类Dev

使用LINQ仅基于单个对象属性来获取两个对象列表之间的差异

来自分类Dev

如何基于对象索引合并两个列表-保留属性?

来自分类Dev

EF Core 2.0 当基于实体列表计算属性时,它需要两个 SaveChanges()

来自分类Dev

在 Angular 中过滤列表时如何显示两个属性

来自分类Dev

如何从python中的两个列表制作字典列表

来自分类Dev

基于两个条件的过滤器阵列

来自分类Dev

基于 spark 和 Java 两个条件过滤列

来自分类Dev

使用LINQ基于另一个属性的两个不同列表中存在的数字之间的差异

Related 相关文章

  1. 1

    基于角度过滤彼此的两个下拉列表

  2. 2

    根据两个键过滤字典列表

  3. 3

    如何基于公共属性加入两个列表

  4. 4

    基于两个属性从列表中检索多个对象

  5. 5

    如何按属性过滤两个 json 对象列表?

  6. 6

    基于两个变量的Dplyr过滤

  7. 7

    基于 Django 类的列表视图,带有两个过滤的单独列表

  8. 8

    如何添加基于字典列表的两个Python数据集?

  9. 9

    通过使用LINQ过滤两个列表来创建字典

  10. 10

    通过使用LINQ过滤两个列表来创建字典

  11. 11

    如何根据字符串值和两个日期过滤字典列表

  12. 12

    使用两个列表生成字典

  13. 13

    来自两个列表的Python字典

  14. 14

    基于两个属性组合过滤掉pandas数据框

  15. 15

    基于共同属性的两个(或多个)列表中的C#合并属性

  16. 16

    使用purr的“ keep”或“ discard”以基于两个条件过滤列表

  17. 17

    .find()基于两个属性的逻辑或

  18. 18

    Linq SelectMany 基于两个属性

  19. 19

    基于两个过滤器过滤Gtest

  20. 20

    从两个列表中过滤元素

  21. 21

    过滤两个列表f#

  22. 22

    使用LINQ仅基于单个对象属性来获取两个对象列表之间的差异

  23. 23

    如何基于对象索引合并两个列表-保留属性?

  24. 24

    EF Core 2.0 当基于实体列表计算属性时,它需要两个 SaveChanges()

  25. 25

    在 Angular 中过滤列表时如何显示两个属性

  26. 26

    如何从python中的两个列表制作字典列表

  27. 27

    基于两个条件的过滤器阵列

  28. 28

    基于 spark 和 Java 两个条件过滤列

  29. 29

    使用LINQ基于另一个属性的两个不同列表中存在的数字之间的差异

热门标签

归档