我有这样的数据列表
data = [['A',11],['A',22],['B',14],['C',23],['C',31],['B',12]]
Run Code Online (Sandbox Code Playgroud)
我将这些独特的项目放在另一个列表中,如下所示:
search=[]
for item in data:
if search.count(item[0]) == 0:
search.append(item[0])
# search contains ['A', 'B', 'C']
Run Code Online (Sandbox Code Playgroud)
如何使用列表搜索data列表search并生成类似的输出?
['A', [11,22]]
['B', [14,12]]
['C', [23,31]]
Run Code Online (Sandbox Code Playgroud)
使用字典:
d = {}
for k, v in data:
d.setdefault(k, []).append(v)
print d
Run Code Online (Sandbox Code Playgroud)
版画
{'A': [11, 22], 'C': [23, 31], 'B': [14, 12]}
Run Code Online (Sandbox Code Playgroud)
您可以获得所有密钥的列表d.keys().
而不是构建列表data,从一开始就使用字典可能会更好.
(其他人defaultdict很快会推荐一个.dict在这种情况下,我更喜欢它,但它并不重要.)
我会用a defaultdict,像这样:
from collections import defaultdict
dd = defaultdict(list)
for key, val in data:
dd[key].append(val)
# dd.iteritems() will give you your output.
Run Code Online (Sandbox Code Playgroud)