【发布时间】:2019-01-03 09:21:23
【问题描述】:
如何总结元组列表中的第二个元素, 如果第一个元素相同?
例如:
在这个
lst = [('milk', '2.35'), ('bread', '1.95'), ('chips', '2.54'),
('milk', '2.38'), ('milk', '2.31'), ('bread', '1.90')]
我会一起总结牛奶的第二种成分, 一起总结面包的第二个元素。
并返回此列表:
[('bread', '3.85'), ('chips', '2.54'), ('milk', '7.04')]
def my_def(a):
my_list = []
for item in a:
if item[0] not in my_list:
my_list.append(item[0])
return my_list
我可以找到相同的:(
【问题讨论】:
-
使用
itertools.groupby()。但首先,将类似数字的字符串转换为数字。 -
@DYZ 他们不需要 groupby,他们已经有了分组逻辑并且匹配的元素在源列表中实际上并不连续。
-
@jonrsharpe 使用现有函数几乎总是优于自定义逻辑。自然是先排序再分组。
-
Groupby 适用于排序列表:您可以按
lst = sorted( (k,float(v)) for k,v in [('milk', '2.35'), ('bread', '1.95'), ('chips', '2.54'), ('milk', '2.38'), ('milk', '2.31'), ('bread', '1.90')])排序(并转换为浮点数)
标签: python python-3.x python-2.7 tuples summary