【发布时间】:2012-10-22 16:13:46
【问题描述】:
我有一个元组列表。第一部分是一个标识符,可以重复也可以不重复。我想将此列表处理成字典,由标识符键入。问题是,我一直无法考虑按键覆盖:
def response_items(self):
ri = self.response_items_listing#(gets the list)
response_items = {}
for k, g in groupby(ri, itemgetter(0)):
x = list(g)
l = [(xx[1],xx[2]) for xx in x]
response_items[k] = l
return response_items
例如像这样的列表:
[('123', 'abc', 'def'),('123', 'efg', 'hij'),('456', 'klm','nop')]
会回来
{123:('efg', 'hij'), 456:('klm', 'nop')}
但我需要:
{123:[('abc', 'def'),('efg', 'hij')], 456:('klm', 'nop')}
我需要采取一个步骤来按键合并/聚合,但我没有看到它完全在 atm。
什么是更好或更有效的解决方案?
【问题讨论】:
-
还有一个关于
defaultdict的问题? -
l = [xx[1:] for xx in x]会更好。也没有理由这样做x = list(g)。 -
这是您的预期输出吗?或者你想要类似的东西:
{123:('efg', 'hij','abc','def'), 456:('klm', 'nop')} -
其实我想要 {123:[('efg', 'hij'),('abc','def')]} for k,v
-
由于当前代码给出了预期的答案,这可能更适合codereview.stackexchange.com。
标签: python list dictionary tuples grouping