2017-09-26 96 views
0

我有一个如下所示的列表,其中包含一些字典。具有相同键值对的字典列表的联合

dlist=[ 
{ 
    "a":1, 
    "b":[1,2] 
}, 
{ 
    "a":3, 
    "b":[4,5] 
}, 
{ 
    "a":1, 
    "b":[1,2,3] 
} 
] 

我想要的结果是在本形式如下所示

dlist=[ 
{ 
    "a":1, 
    "b":[1,2,3] 
}, 
{ 
    "a":3, 
    "b":[4,5] 
} 
] 

我可以解决环路和比较此使用多个迭代中,但有一个pythonic的方法?

回答

1

下面是一个使用一个临时defaultdict的解决方案:

from collections import defaultdict 
dd = defaultdict(set)        # create temporary defaultdict 
for d in dlist: dd[d["a"]] |= set(d["b"])   # union set(b) for each a 
l = [{"a":k, "b":list(v)} for k,v in dd.items()] # generate result list 

Try it online!

0

如果我的理解是正确的

uniques, theNewList = set(), [] 
for d in dlist: 
    cur = d["a"] # Avoid multiple lookups of the same thing 
    if cur not in uniques: 
     theNewList.append(d) 
    uniques.add(cur) 
print(theNewList) 
相关问题