回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我做python的时间不长了,我在这个问题上陷入了困境。我有一个包含其他列表的列表,每个列表都包含不同数量的元组。我尝试过使用以前回答过的问题,如<a href="https://stackoverflow.com/questions/16306022/group-python-list-of-lists-into-groups-based-on-overlapping-items">grouping python lists of lists</a>,<a href="https://stackoverflow.com/questions/409370/sorting-and-grouping-nested-lists-in-python">sorting and grouping nested lists</a>和其他方法,如使用计数器,但它们似乎都不适用于我的列表,其输出如下(这是我的输入数据):</p>
<pre><code>[('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')]
</code></pre>
<p>我认为我的列表(元组列表)的格式与其他问题中使用的格式不同。当我询问它的数据类型时,它会给出list、tuple和string,但会多次打印这些答案:</p>
^{pr2}$
<p>即使我尝试使用sorted(第二次尝试)对该列表进行排序,它们都会返回由许多空列表分隔的同一个未分组列表的变体:</p>
<pre><code># 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.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(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)
</code></pre>
<p>我想先按0位的TXXXX编号,然后按位置1的两个字母对该列表进行分组,同时保留每组中所有重复的元素。然而,详细解释如何将Txxxx编号分组将是有帮助的,这样我就可以自己想出如何对位置1的字母做同样的操作。所需输出应如下所示:</p>
<pre><code>[[('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')]]
</code></pre>
<p>同样在这个例子中,我不相信做一个字典会起作用(我在类似的问题中看到过),因为这只是列表的一个示例,完整的列表在位置0包含许多不同的Txxxx数字。在</p>
<p>提前谢谢你。在</p>