akcw 发表于 2021-5-29 14:05:30

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

【问题描述】

小王的最近几天的水果消费清单如下所示(若没有消费记录,输入为"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"结束,每条数据是水果名和消费额,空格隔开

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

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


akcw 发表于 2021-5-29 14:07:20

bill = {}
bill_list=[]
user_input = input()
while user_input != None:##在列表中添加字典
    mydict={}
    fruit,money = user_input.split()
    mydict=int(money)
    bill_list.append(mydict)
    user_input = input()
代码运行问题
fruit,money = user_input.split()
ValueError: not enough values to unpack (expected 2, got 0)
怎么改

wp231957 发表于 2021-5-29 14:41:29

akcw 发表于 2021-5-29 14:07
bill = {}
bill_list=[]
user_input = input()


你咋输入的呀,这明显是参数不够

akcw 发表于 2021-5-29 20:44:16

wp231957 发表于 2021-5-29 14:41
你咋输入的呀,这明显是参数不够

就是按题目中的要求输入的,我不知道为什么参数不够

wp231957 发表于 2021-5-29 20:48:13

akcw 发表于 2021-5-29 20:44
就是按题目中的要求输入的,我不知道为什么参数不够

你啥都不说,那没办法了,只能你自己慢慢玩

akcw 发表于 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)
就这样输入然后报错

wp231957 发表于 2021-5-29 21:00:17

akcw 发表于 2021-5-29 20:53
'apple' 30
'pear' 8
'apple' 30


fruit,money = user_input.split()
你这里是俩变量需要分配数据,可是None却是只有一个,当然不够分

akcw 发表于 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,我改好了,谢谢

傻眼貓咪 发表于 2021-9-5 00:14:32

def main():
    """
    輸入消費記錄,每條數據是水果名和消費額,空格隔開,輸入 None 結束
    """
    transaction = dict()
    while True:
      fruit, *price = input().split()
      if fruit == "None": break
      price = float(price)
      if fruit in transaction:
            transaction += 1
            transaction += price
      else:
            transaction =

    for k in transaction.keys():
      print(k, *transaction)

if __name__ == "__main__":
    print(main.__doc__)
    main()
页: [1]
查看完整版本: 字典键重复如何将对应的值相加<新人求助>