我对 python 字典和嵌套都不熟悉。
这就是我想要找到的 - 我的对象都具有相同的属性:颜色和高度。我需要比较所有属性并列出所有匹配的属性。
matchList = []
dict = {obj1:{'color': (1,0,0), 'height': 10.6},
obj2:{'color': (1,0.5,0), 'height': 5},
obj3:{'color': (1,0.5,0), 'height': 5},
obj4:{'color': (1,0,0), 'height': 10.6}}
我需要找到一种方法来将每个对象进行相互比较,并创建所有匹配对象的嵌套列表。因此,如果 obj1 和 obj4 匹配,并且 obj2 和 3 匹配,我希望这就是我的结果:
matchList = [[obj1, obj4], [obj2, obj3]]
我该如何去做呢?
最佳答案
dict
指的是内置的Python字典类,所以你最好不要重写它。
在以下示例中,我已将字典重命名为 objs
:
import itertools as it
keys = sorted(objs.keys(), key=lambda k: objs[k]) # Make sure `objs` with the same value be arranged next to each other
groups = it.groupby(keys, lambda k: d[k]) # so that we can group them by value
match_list = [list(keys) for v, keys in groups]
关于python:在嵌套字典中查找匹配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578798/