Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按第一项对python元组进行分组_Python - Fatal编程技术网

按第一项对python元组进行分组

按第一项对python元组进行分组,python,Python,我有以下长python元组: ('user1', 'data1', 'name1'), ('user2', 'data1', 'name1'), ('user1', 'data2', 'name2'), ('user2', 'data2', 'name2') etc.. 我想把这个元组分组如下 ('user1', 'data1', 'name1', name2 ), ('user2', 'data1', 'name1', name2) etc.. 有人知道怎么做吗。。到目前为止,我已经: f

我有以下长python元组:

('user1', 'data1', 'name1'), ('user2', 'data1', 'name1'), ('user1', 'data2', 'name2'), ('user2', 'data2', 'name2') etc..
我想把这个元组分组如下

('user1', 'data1', 'name1', name2 ), ('user2', 'data1', 'name1', name2) etc..
有人知道怎么做吗。。到目前为止,我已经:

from itertools import groupby

things = [('user1', 'data1', 'name1'), ('user2', 'data1', 'name1'), ('user1', 'data2', 'name2'), ('user2', 'data2', 'name2')]

things =  sorted(things, key=lambda tup: tup[0])

for key, group in groupby(things, lambda x: x[0]):
    print key
    for thing in group:
        print (key, thing[1], things[2])
    print " "
哪个输出

user1
('user1', 'data1', ('user2', 'data1', 'name1'))
('user1', 'data2', ('user2', 'data1', 'name1'))

user2
('user2', 'data1', ('user2', 'data1', 'name1'))
('user2', 'data2', ('user2', 'data1', 'name1'))

但是,这不会正确地将第三项“名称”分组

您粘贴的代码第8行有一个输入错误,您正在为
事物
而不是
事物
编制索引。而不是

print (key, thing[1], things[2])
你想要

print (key, thing[1], thing[2])
然后,您将获得预期的输出


注意:@wildwilhelm在一篇评论中首先指出了这一点。

您粘贴的代码第8行有一个输入错误,您在这里索引的是
事物
,而不是
事物
。而不是

print (key, thing[1], things[2])
你想要

print (key, thing[1], thing[2])
然后,您将获得预期的输出


注:@wildwilhelm在一篇评论中首先指出了这一点。

这可能是一个很好的地方,可以使用:

结果:

user2
('user2', 'data1', 'name1')
('user2', 'data2', 'name2')

user1
('user1', 'data1', 'name1')
('user1', 'data2', 'name2')

这可能是一个使用以下工具的好地方:

结果:

user2
('user2', 'data1', 'name1')
('user2', 'data2', 'name2')

user1
('user1', 'data1', 'name1')
('user1', 'data2', 'name2')

语法错误?也许你想要打印(键,东西[1],东西[2])。另外,为了明确起见,您可以在代码顶部插入itertools import groupby的
。如果您想按元组的第一个元素分组,为什么结果元组中不以
user1
开头显示
data2
?这是有意的吗?
print(key,thing[1],things[2])
不能被
print thing
替换吗?语法错误?也许你想要打印(键,东西[1],东西[2])
。另外,为了明确起见,您可以在代码顶部插入itertools import groupby的
。如果您想按元组的第一个元素分组,为什么结果元组中不以
user1
开头显示
data2
?这是故意的吗?
print(key,thing[1],things[2])
不能被
print thing
替换吗?