列表中可以包含元组吗python_对包含元组的列表中的项进行分组python

博主遇到一个挑战,需要对包含元组的列表进行分组和排序。列表中的每个元组都有三个元素,包括一个TXXXX编号、两个字母和一个数值。尝试了多种分组方法,如使用groupby、Counter等,但没有成功。目标是首先按TXXXX编号分组,然后按第二个字母分组,同时保留所有重复元素。期望的输出是一个按编号和字母分组的列表。
摘要由CSDN通过智能技术生成

我做python的时间不长了,我在这个问题上陷入了困境。我有一个包含其他列表的列表,每个列表都包含不同数量的元组。我尝试过使用以前回答过的问题,如grouping python lists of lists,sorting and grouping nested lists和其他方法,如使用计数器,但它们似乎都不适用于我的列表,其输出如下(这是我的输入数据):[('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')]

我认为我的列表(元组列表)的格式与其他问题中使用的格式不同。当我询问它的数据类型时,它会给出list、tuple和string,但会多次打印这些答案:

^{pr2}$

即使我尝试使用sorted(第二次尝试)对该列表进行排序,它们都会返回由许多空列表分隔的同一个未分组列表的变体:# 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)

我想先按0位的TXXXX编号,然后按位置1的两个字母对该列表进行分组,同时保留每组中所有重复的元素。然而,详细解释如何将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数字。在

提前谢谢你。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值