按第一项对python元组进行分组
我有以下长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
('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
替换吗?