鱼C论坛

 找回密码
 立即注册
查看: 1952|回复: 8

字典键重复如何将对应的值相加<新人求助>

[复制链接]
发表于 2021-5-29 14:05:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
【问题描述】

小王的最近几天的水果消费清单如下所示(若没有消费记录,输入为"None"),每条记录的格式类似如下,以"None"结束,每条数据是水果名和消费额,空格隔开:

apple 25.0

pear 8.0

apple 5.0

pear 2.0

banana 10.0

orange 30.0

None


题目要求:

1. 输出小王最近购买过哪些水果及其购买次数(整数)和总金额(保留两位小数)。(排序规则:先按购买金额降序,再按购买次数降序,都相同的话按水果名升序)



【样例输入】

apple 25.0

pear 8.0

apple 5.0

pear 2.0

banana 10.0

orange 30.0

None


【样例输出】

apple 2 30.00

orange 1 30.00

pear 2 10.00

banana 1 10.00



【样例说明】

输入为不定行,以"None"结束,每条数据是水果名和消费额,空格隔开

输出为不定行,每行依次为:水果名、购买次数(整数)、总金额(保留两位小数)。

(排序规则:先按购买金额降序,再按购买次数降序,都相同的话按水果名升序)


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-29 14:07:20 | 显示全部楼层
bill = {}
bill_list=[]
user_input = input()
while user_input != None:##在列表中添加字典
    mydict={}
    fruit,money = user_input.split()
    mydict[fruit]=int(money)
    bill_list.append(mydict)
    user_input = input()
代码运行问题
fruit,money = user_input.split()
ValueError: not enough values to unpack (expected 2, got 0)
怎么改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-29 14:41:29 From FishC Mobile | 显示全部楼层
akcw 发表于 2021-5-29 14:07
bill = {}
bill_list=[]
user_input = input()

你咋输入的呀,这明显是参数不够
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 20:44:16 | 显示全部楼层
wp231957 发表于 2021-5-29 14:41
你咋输入的呀,这明显是参数不够

就是按题目中的要求输入的,我不知道为什么参数不够
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-29 20:48:13 From FishC Mobile | 显示全部楼层
akcw 发表于 2021-5-29 20:44
就是按题目中的要求输入的,我不知道为什么参数不够

你啥都不说,那没办法了,只能你自己慢慢玩
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 20:53:06 | 显示全部楼层
本帖最后由 akcw 于 2021-5-29 20:55 编辑
wp231957 发表于 2021-5-29 20:48
你啥都不说,那没办法了,只能你自己慢慢玩


'apple' 30
'pear' 8
'apple' 30
'orange' 30
None
Traceback (most recent call last):
  File "C:\Users\l'x'p'y'y'd's\Desktop\python\代码\统计水果消费购买次数和总金额.py", line 6, in <module>
    fruit,money = user_input.split()
ValueError: not enough values to unpack (expected 2, got 1)
就这样输入然后报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-29 21:00:17 From FishC Mobile | 显示全部楼层
akcw 发表于 2021-5-29 20:53
'apple' 30
'pear' 8
'apple' 30

fruit,money = user_input.split()
你这里是俩变量需要分配数据,可是None却是只有一个,当然不够分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 21:02:25 | 显示全部楼层
本帖最后由 akcw 于 2021-5-29 21:10 编辑
wp231957 发表于 2021-5-29 21:00
fruit,money = user_input.split()
你这里是俩变量需要分配数据,可是None却是只有一个,当然不够分


ok,我改好了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-5 00:14:32 | 显示全部楼层
  1. def main():
  2.     """
  3.     輸入消費記錄,每條數據是水果名和消費額,空格隔開,輸入 None 結束
  4.     """
  5.     transaction = dict()
  6.     while True:
  7.         fruit, *price = input().split()
  8.         if fruit == "None": break
  9.         price = float(price[0])
  10.         if fruit in transaction:
  11.             transaction[fruit][0] += 1
  12.             transaction[fruit][1] += price
  13.         else:
  14.             transaction[fruit] = [1, price]

  15.     for k in transaction.keys():
  16.         print(k, *transaction[k])

  17. if __name__ == "__main__":
  18.     print(main.__doc__)
  19.     main()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-25 00:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表