我一直沒有做python很長時間,而且我很困擾這個問題。我有一個列表,其中可能包含其他列表,其中每個列表都包含不同數量的元組。我試過使用以前回答的問題,如grouping python lists of lists,sorting and grouping nested lists和其他方法,如使用計數器,但他們似乎沒有在我的清單上工作,其輸出如下所示(這是我的輸入數據):在列表中包含元組列表中的項目python
[('T0931', 'AB', '0.7826705747628963')] [('T0932', 'AB', '0.63950861050628')] [('T0933', 'AB', '0.8960345460457968'), ('T0933', 'AF', '0.8951297220212914'), ('T0933', 'BC', '0.8951297782393018'), ('T0933', 'CD', '0.8951298105762795'), ('T0933', 'DE', '0.8951299080330034'), ('T0933', 'EF', '0.8941510860547524')] [('T0932', 'AB', '0.63950861050628')] [('T0933', 'AB', '0.8960345460457968'), ('T0933', 'AF', '0.8951297220212914'), ('T0933', 'BC', '0.8951297782393018'), ('T0933', 'CD', '0.8951298105762795'), ('T0933', 'DE', '0.8951299080330034'), ('T0933', 'EF', '0.8941510860547524')]
我想我的列表(元組列表)的格式與其他問題中使用的格式不同。當我問它的數據類型談到了列表,元組,字符串,但打印這些問題的答案很多次:
print(type(Data))
# Returns list
print(type(Data[0]))
# Returns tuple
print(type(Data[0][0]))
# Returns str
#output looks like this:
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
即使當我試圖解決這個名單使用排序(第2次嘗試),他們的所有返回變種由許多空列表分開相同未分組列表:
# Q is name of list
#attempt 1:
def grouper(sequence):
result = []
for item in sequence:
for members, group in result:
if members.intersection(item):
members.update(item)
group.append(item)
break
else:
result.append((set(item), [item]))
return [group for members, group in result]
output=grouper(Q)
print(output)
#attempt 2:
import itertools
import operator
Q=sorted(q,key=operator.itemgetter(0))
for key,group in itertools.groupby(Q,operator.itemgetter(0)):
print(list(group))
#attempt 3:
from collections import Counter
C = Counter(Q)
for list,v in C.items():
print ([list,]*v)
我將在位置1喜歡組這個列表首先由TXXXX數目在位置0,然後由這兩個字母,同時保留每組中的所有重複的元素。然而,如何將Txxxx編號分組的詳細說明會很有幫助,所以我可以弄清楚如何對位置1的字母自己做同樣的操作。所需的輸出應該如下所示:
[[('T0931', 'AB', '0.7826705747628963')],[('T0932', 'AB', '0.6395086105062'),('T0932', 'AB', '0.63950861050628')],[('T0933', 'AB', '0.8960345460457968'), ('T0933', 'AF', '0.8951297220212914'), ('T0933', 'BC', '0.8951297782393018'), ('T0933', 'CD', '0.8951298105762795'), ('T0933', 'DE', '0.8951299080330034'), ('T0933', 'EF', '0.8941510860547524'), ('T0933', 'AB', '0.8960345460457968'), ('T0933', 'AF', '0.8951297220212914'), ('T0933', 'BC', '0.8951297782393018'), ('T0933', 'CD', '0.8951298105762795'), ('T0933', 'DE', '0.8951299080330034'), ('T0933', 'EF', '0.8941510860547524')]]
此外,在這種情況下,我不相信做一本字典就可以了(這是我看到了類似的問題做了),因爲這僅僅是列表的樣本中,完整列表在位置0包含許多不同的Txxxx數字。
在此先感謝您。
從你提供的內容我不相信你的數據是一個列表清單。你能否提供預期的輸入和期望的輸出?如果不能直觀地看到你想要的東西,這有點令人困惑。 –
我編輯它,試圖使其更清晰,其中包括從另一部分代碼混合導致原始輸出中出現空列表的數據類型的新輸出。 – Emma