【发布时间】:2021-03-14 23:54:22
【问题描述】:
只是遇到了 itertools.groupby 的问题。给定一个字典列表,
my_list = [
{'name': 'stock1', 'price': 200, 'shares': 100},
{'name': 'stock2', 'price': 1.2, 'shares': 1000},
{'name': 'stock3', 'price': 0.05, 'shares': 200000},
{'name': 'stock1', 'price': 200.2, 'shares': 50}]
我希望从这个列表中创建一个字典,其中键是股票的名称,值是该股票的字典列表,例如:
{'stock1': [{'name': 'stock1', 'price': 200, 'shares': 100}, {'name': 'stock1', 'price': 200.2, 'shares': 50}] }
我运行了这段代码:
by_name = { name: list(items) for name, items in itertools.groupby(
my_list, key=lambda x: x['name'])}
,这是我得到的结果:
{'stock1': [{'name': 'stock1', 'price': 200.2, 'shares': 50}],
'stock2': [{'name': 'stock2', 'price': 1.2, 'shares': 1000}],
'stock3': [{'name': 'stock3', 'price': 0.05, 'shares': 200000}]}
对于 stock1,我预计列表中有 2 个项目,但它只有原始 my_list 中的最新条目。谁能指出错误在哪里?谢谢!
【问题讨论】:
-
在使用 groupBy 之前,您需要按库存对初始列表进行排序
-
这能回答你的问题吗? How do I use itertools.groupby()?