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