鱼C论坛

 找回密码
 立即注册
查看: 2244|回复: 18

[已解决]python字典

[复制链接]
发表于 2020-9-20 14:43:21 | 显示全部楼层 |阅读模式
2鱼币
想要其他 的方法,想不出来了,大佬们帮忙想一想


dt={'n01':90,'n02':89,'n03':78,'n04':90}
sum=0
num=len(dt)
dt.values()
for value in dt.values():
    sum+=value
average=sum/num
print('参加考试的人数为:%s,平均分数:%.2s'%(num,average))
for key,value in dt.items():
  if max(dt.values())==value:
    print('成绩最高分数:%s,学号:%s'%(value,key))




最佳答案
2020-9-20 14:43:22
qcyQCY 发表于 2020-9-23 19:23
这有一个成绩
应该有两个

这不是很简单吗
from collections import defaultdict

dt = {'n01': 90, 'n02': 89, 'n03': 78, 'n04': 90}

c = defaultdict(list)
for k, v in dt.items():
    c[v].append(k)

count = len(dt)
avg = sum(dt.values()) / count
max_value = max(c.keys())
max_numbers = c[max_value]

print('参加考试的人数为:%s,平均分数:%.2s' % (count, avg))
[print('成绩最高分数:%s,学号: %s' % (max_value, n)) for n in max_numbers]
字典.png
字典问题.png

最佳答案

查看完整内容

这不是很简单吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-20 14:43:22 | 显示全部楼层    本楼为最佳答案   
qcyQCY 发表于 2020-9-23 19:23
这有一个成绩
应该有两个

这不是很简单吗
from collections import defaultdict

dt = {'n01': 90, 'n02': 89, 'n03': 78, 'n04': 90}

c = defaultdict(list)
for k, v in dt.items():
    c[v].append(k)

count = len(dt)
avg = sum(dt.values()) / count
max_value = max(c.keys())
max_numbers = c[max_value]

print('参加考试的人数为:%s,平均分数:%.2s' % (count, avg))
[print('成绩最高分数:%s,学号: %s' % (max_value, n)) for n in max_numbers]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-20 14:49:06 | 显示全部楼层
本帖最后由 疾风怪盗 于 2020-9-20 14:53 编辑

这不是我昨天回复的那个帖子的代码么(好像还有点不一样。。。。。。)。。。。。。。

什么叫想要其他的方法?想要怎么样的方法?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-20 15:01:26 | 显示全部楼层
疾风怪盗 发表于 2020-9-20 14:49
这不是我昨天回复的那个帖子的代码么(好像还有点不一样。。。。。。)。。。。。。。

什么叫想要其他的 ...

想要另一种方法,老哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-20 15:02:17 | 显示全部楼层
qcyQCY 发表于 2020-9-20 15:01
想要另一种方法,老哥

一个问题想要多种解决方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-20 16:27:52 | 显示全部楼层
本帖最后由 疾风怪盗 于 2020-9-20 16:51 编辑

用pandas
dt={'n01':90,'n02':89,'n03':78,'n04':90}

import pandas as pd
a=pd.DataFrame({'num':list(dt.values())},index=list(dt.keys()))
print('参加考试的人数为:%s,平均分数:%.2s'%(len(a),a.mean().values[0]))
b=a[a['num'].isin(a.max().values)]
for i in b.index:
    print('成绩最高分数:%s,学号:%s' % (b.loc[i,'num'], i))
只会这个了,其他方法不会了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-20 17:06:42 | 显示全部楼层
疾风怪盗 发表于 2020-9-20 16:27
用pandas

只会这个了,其他方法不会了

牛逼,老哥,导入模块,我想都不敢想
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-20 17:07:47 | 显示全部楼层
qcyQCY 发表于 2020-9-20 17:06
牛逼,老哥,导入模块,我想都不敢想

老哥,你看看这个,不用定义函数能不能操作
列表.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-20 17:08:18 | 显示全部楼层
qcyQCY 发表于 2020-9-20 17:07
老哥,你看看这个,不用定义函数能不能操作

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

使用道具 举报

发表于 2020-9-20 17:18:30 | 显示全部楼层

这个很难么?不要函数就把函数内容拆出来。。。。。。是我理解不对么?
a = [11, 22, 33, 55, 66, 77, 88, 99, 100]
# value=66
value = int(input("请输入需要查找的数字:"))
if value in a:
    # new_value=44
    new_value = int(input("请输入插入的数字:"))
    a.insert(a.index(value), new_value)
else:
    print(f"在列表中未找到{value}")
print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-20 19:40:07 | 显示全部楼层
qcyQCY 发表于 2020-9-20 17:06
牛逼,老哥,导入模块,我想都不敢想

a=[11,22,33,55,66,77,88,99,100]
er=input('请输入查找的数字:')
value=int(er)
if value in a:
    q=a.index(value)
    a.insert(q,44)
    print("插入成功!")



我刚刚又发现一种很简单的方法
else:
    print('没有找到!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-20 19:50:50 | 显示全部楼层
qcyQCY 发表于 2020-9-20 19:40
a=[11,22,33,55,66,77,88,99,100]
er=input('请输入查找的数字:')
value=int(er)

你这写的,不是和我的一样的么。。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-20 22:05:11 | 显示全部楼层
from collections import defaultdict

dt = {'n01': 90, 'n02': 89, 'n03': 78, 'n04': 90}

c = defaultdict(list)
for k, v in dt.items():
    c[v].append(k)

count = len(dt)
avg = sum(dt.values()) / count
max_value = max(c.keys())
max_numbers = c[max_value]

print('参加考试的人数为:%s,平均分数:%.2s' % (count, avg))
print('成绩最高分数:%s,学号:%s' % (max_value, max_numbers))
不知道是不是这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-21 08:29:13 | 显示全部楼层
dt = {'n01': 90, 'n02': 89, 'n03': 78, 'n04': 90}
print('参加考试的人数为:%s,平均分数:%.2s' % (count:=len(dt), sum(dt.values()) / count))
print('成绩最高分数:%s,学号:%s' % max(dt.items(), key=lambda x:x[1]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-23 19:23:46 | 显示全部楼层
BSOD 发表于 2020-9-20 22:05
不知道是不是这样

这有一个成绩
应该有两个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-24 22:40:11 | 显示全部楼层
这帖子,这么久了,提供了这么多方案,也该解决了吧
敢不敢结了帖子。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-24 23:19:12 | 显示全部楼层
确实,楼主该结帖了,养成个好习惯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-25 08:07:04 | 显示全部楼层
dt = {'n01': 90, 'n02': 89, 'n03': 78, 'n04': 90}
print(f"参加考试的人数是{len(dt)},考试的平均分是{sum(dt.values()) // len(dt)}")
for (xuehao, fenshu) in dt.items():
    if max(dt.values()) == fenshu:
        print(f'最高得分是{fenshu},学号是{xuehao}')

就是多利用了几个列表的小技巧而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-25 08:38:04 | 显示全部楼层
很实用,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 13:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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