将元组列表转换为字典
我有一个像这样的元组列表:
[
('a', 1),
('a', 2),
('a', 3),
('b', 1),
('b', 2),
('c', 1),
]
我想通过第一个项目迭代这个键控,因此,例如,我可以打印这样的内容:
a 1 2 3
b 1 2
c 1
如果不保留一个项目来跟踪第一个项目是否和我循环元组一样吗? 这感觉相当混乱(而且我必须先对列表进行排序)......
I have a list of tuples like this:
[
('a', 1),
('a', 2),
('a', 3),
('b', 1),
('b', 2),
('c', 1),
]
I want to iterate through this keying by the first item, so, for example, I could print something like this:
a 1 2 3
b 1 2
c 1
How would I go about doing this without keeping an item to track whether the first item is the same as I loop around the tuples? This feels rather messy (plus I have to sort the list to start with)...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
产生:
produces:
稍微简单一点...
Slightly simpler...
使用 groupby 输出的解决方案
:
groupby(l, lambda x:x[0])
为您提供一个迭代器,其中包含A solution using groupby
Output:
groupby(l, lambda x:x[0])
gives you an iterator that contains我只会做基本的
如果这么短,为什么要使用复杂的东西。 当然,如果您不介意使用 setdefault 也没关系。
I would just do the basic
If it's this short, why use anything complicated. Of course if you don't mind using setdefault that's okay too.
打印按第一项分组的元组列表
此答案基于 @gommen 一个。
输出:
Print list of tuples grouping by the first item
This answer is based on the @gommen one.
Output: