0
[('a',), ('b',), ('a',)]
[('a', 1.0), ('b', 2.0), ('a', 3.0)]
产生
{'a': ([1.0, 3.0],), 'b': ([2.0],)}
[('a', 1.0, 0.1), ('b', 2.0, 0.2), ('a', 1.0, 0.3)]
产生
{'a': ([1.0, 1.0], [0.1, 0.3]), 'b': ([2.0], [0.2])}
[('a', 1.0, 0.1, 7), ('b', 2.0, 0.2, 8), ('a', 1.0, 0.3, 9)]
产生
{'a': ([1.0, 1.0], [0.1, 0.3], [7, 9]), 'b': ([2.0], [0.2], [8])}
我是新来的Python - 这是我想出了。
def Collate(list_of_tuples):
if len(list_of_tuples)==0 or len(list_of_tuples[0])==0:
return defaultdict(tuple)
d = defaultdict(lambda: tuple([] for i in range(len(list_of_tuples[0])-1)))
for t in list_of_tuples:
d[t[0]]
for i,v in enumerate(t):
if i>0:
d[t[0]][i-1].append(v)
return d
在你想知道我的背景情况下,元组的列表代表的测量。每个元组中的第一项是被测量事物的标识。 后续项目是该事物的不同类型的度量。事物以随机顺序测量,每次都是未知数。 该功能将每个测量值集中在一起进行进一步处理。随着应用的发展,不同类型的测量将被添加。 当客户端代码中的度量类型数量发生变化时,我希望这个Collate函数不必更改。
如果相同ID的元组包含不同数量的测量结果,例如: ('a',1.0,0.1),('b',2.0,0.2),('a',3.0),('a',4.0,0.4)]应该产生什么? – void