Skip to main content
 首页 » 编程设计

Python之从字典列表中删除重复键

2025年05月04日14artech

我有一个 Python 字典列表:

[{u'value': u'firstname', u'key': u'Coach'},  
 {u'value': u'lastname', u'key': u'Coach'},  
 {u'value': u'age', u'key': u'Coach'},  
 {u'value': u'firstname', u'key': u'Player'},  
 {u'value': u'league', u'key': u'Player'}] 

如何从字典列表中删除重复的 key 并将它们的值合并到列表中,如下所示:

l = [('Coach', ['firstname', 'lastname', 'age']),  
     ('Player', ['firstname', 'league'])] 

遍历列表项

for k, v in l: 
    print k, v 

请您参考如下方法:

你可以使用 defaultdict与 list作为值类型以收集值:

In [5]: from collections import defaultdict 
 
In [6]: data = [{u'value': u'firstname', u'key': u'Coach'},  
 {u'value': u'lastname', u'key': u'Coach'},  
 {u'value': u'age', u'key': u'Coach'},  
 {u'value': u'firstname', u'key': u'Player'},  
 {u'value': u'league', u'key': u'Player'}] 
 
In [7]: l = defaultdict(list) 
 
In [8]: for row in data: 
   ...:     l[row['key']].append(row['value']) 
   ...:      
 
In [9]: l 
Out[9]:  
defaultdict(list, 
            {'Coach': ['firstname', 'lastname', 'age'], 
             'Player': ['firstname', 'league']}) 

然后您可以使用 items 轻松地将字典转换为元组列表。方法:

In [10]: list(l.items()) 
Out[10]:  
[('Coach', ['firstname', 'lastname', 'age']), 
 ('Player', ['firstname', 'league'])]