我有一个像这样的元组列表:
t= [('A', 3000, '20140304'), ('B', 2000, '20140304'),('DD',3000, '20140304'), ('N', 102, '20140305'), ('S', 136, '20140305'), ('N', 182, '20140305'),('G',136, '20140305')]
我想找到它在同一天的价格是否相同。如果是,则返回一个带有名称的元组对的新列表。输出应该是这样的:
[('A','DD'),('S','G')]
答案 0 :(得分:0)
import collections as coll
t = [('A', 3000, '20140304'), ('B', 2000, '20140304'),('DD',3000, '20140304'), ('N', 102, '20140305'), ('S', 136, '20140305'), ('N', 182, '20140305'),('G',136, '20140305')]
d = coll.defaultdict(lambda:coll.defaultdict(set))
for a,p,stackOverflow in t: d[stackOverflow][p].add(a)
for t in d:
for p in d[t]:
print("On day", t, ", the following items were sold at price", p, ':\n' + ','.join(sorted(d[t][p])))
答案 1 :(得分:0)
您可以将元组聚合为defaultdict,并将元组(price, date)
作为关键字。迭代该defaultdict,并返回包含多个项目的任何名称列表。
from collections import defaultdict
price_date_dict = defaultdict(list)
for name, price, date in t:
price_date_dict[(price, date)].append(name)
return [tuple(names) for names in price_date_dict.values() if len(names) > 1]