我是 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',)])])
