如何解决如何在嵌套元组中找到总和
编写一个python程序来定义一个元组,以接受3种食品 详细信息,例如产品名称及其价格和有效期 子元组,然后查找所有产品的价格总和 具有相同的到期日期。
t=(('CAKE',(748.0,'07-09-2020')),('JELLY',(12.0,('CREAM',(244.0,'03-11-2020')))
然后,输出应该像
TOTAL PRICE:760
t=(('CAKE','03-11-2020')))
l=list(t);total=0
for i in range(0,len(l)):
check=l[i][1][1]
c=l.count(check)
if c>1:
total+=l[i][1][0]
print(total)
如何解决??
解决方法
类似
from collections import defaultdict
t=(('CAKE',(748.0,'07-09-2020')),('JELLY',(12.0,('CREAM',(244.0,'03-11-2020')))
data = defaultdict(int)
for entry in t:
data[entry[1][1]] += entry[1][0]
print(data)
输出
defaultdict(<class 'int'>,{'07-09-2020': 760.0,'03-11-2020': 244.0})
,
您已经有一个基于defaultdict
的答案,但是我要添加另一个答案,以便还显示如何将每个数据项直接解压缩到相关变量中(price
和{ {1}})。这里的date
是一个将包含描述的变量(例如_
),但是由于我们此处未使用该值,因此我将常规名称用作虚拟变量,而不是将其称为{{1 }}。
使用'CAKE'
,字典中的元素在首次引用时会自动创建为浮点零。
name
礼物:
defaultdict(float)
请注意,根据您的python版本,输出中日期的顺序可能会有所不同。
更新:您还询问了如何不使用from collections import defaultdict
t = (('CAKE','03-11-2020')))
totals = defaultdict(float)
for _,(price,date) in t:
totals[date] += price
for date in totals:
print(f'{date} {totals[date]}')
来完成它,就像这样:
07-09-2020 760.0
03-11-2020 244.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。