Rag*_*gav 1 python list python-2.7
我是python中的新手,在获得此输出方面面临问题
a = [('textVerify', 'AH', 'SELECT SERVICES'), ('textVerify', 'F7', 'test1>'),('audioVerify', '091;0'), ('imageVerify', 'duck.gif'),('imageVerify', 'egg.gif')]
Run Code Online (Sandbox Code Playgroud)
我想创建一个新列表,它应该包含所有第0个独特元素
audioVerify,imageVerify,textVerify
Run Code Online (Sandbox Code Playgroud)
所以预期的结果是
['textVerify',(('AH', 'SELECT SERVICES'), ('F7', 'test1>')) 'audioVerify', ('091;0'), ('imageVerify', ('duck.gif','egg.gif')]
Run Code Online (Sandbox Code Playgroud)
你最好用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',)]})
Run Code Online (Sandbox Code Playgroud)
现在您可以按名称/索引访问其元素:
>>> d['textVerify']
[('AH', 'SELECT SERVICES'), ('F7', 'test1>')]
>>> d['textVerify'][0][0]
'AH'
Run Code Online (Sandbox Code Playgroud)
如果您需要保留字典键的顺序,您可以使用as和Ashwini Chaudhary所描述OrderedDict的.setdefault()方法:
>>> 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',)])])
Run Code Online (Sandbox Code Playgroud)