Skip to main content
 首页 » 编程设计

python之列出python中的重复数据串联

2025年05月04日14kerrycode

我是 python 的新手,在获取此输出时遇到问题

 a = [('textVerify', 'AH', 'SELECT SERVICES'), ('textVerify', 'F7', 'test1>'),('audioVerify', '091;0'), ('imageVerify', 'duck.gif'),('imageVerify', 'egg.gif')] 

我想创建一个新列表,它应该包含所有第 0 个唯一元素,例如

  audioVerify,imageVerify,textVerify 

所以预期的结果是

 ['textVerify',(('AH', 'SELECT SERVICES'), ('F7', 'test1>'))  'audioVerify', ('091;0'),  ('imageVerify', ('duck.gif','egg.gif')] 

请您参考如下方法:

你最好使用 defaultdict为此:

>>> from collections import defaultdict 
>>> d = defaultdict(list) 
>>> for item in a: 
...     d[item[0]].append(item[1:]) 
... 
>>> d 
defaultdict(<class 'list'>, {'textVerify': [('AH', 'SELECT SERVICES'),  
('F7', 'est1>')], 'imageVerify': [('duck.gif',), ('egg.gif',)],  
'audioVerify': [('091;0',)]}) 

现在您可以通过名称/索引访问其元素:

>>> d['textVerify'] 
[('AH', 'SELECT SERVICES'), ('F7', 'test1>')] 
>>> d['textVerify'][0][0] 
'AH' 

如果你需要保留字典键的顺序,你可以使用 OrderedDict ,连同 .setdefault() 方法,如 Ashwini Chaudhary 所述:

>>> d = OrderedDict() 
>>> for x in a: 
...     d.setdefault(x[0],[]).append(x[1:]) 
... 
>>> d 
OrderedDict([('textVerify', [('AH', 'SELECT SERVICES'), ('F7', 'test1>')]),  
('audioVerify', [('091;0',)]), ('imageVerify', [('duck.gif',), ('egg.gif',)])])