qcyQCY 发表于 2020-9-20 14:43:21

python字典

想要其他 的方法,想不出来了,大佬们帮忙想一想


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))




BSOD 发表于 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.append(k)

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

print('参加考试的人数为:%s,平均分数:%.2s' % (count, avg))

疾风怪盗 发表于 2020-9-20 14:49:06

本帖最后由 疾风怪盗 于 2020-9-20 14:53 编辑

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

什么叫想要其他的方法?想要怎么样的方法?

qcyQCY 发表于 2020-9-20 15:01:26

疾风怪盗 发表于 2020-9-20 14:49
这不是我昨天回复的那个帖子的代码么(好像还有点不一样。。。。。。)。。。。。。。

什么叫想要其他的 ...

想要另一种方法,老哥

qcyQCY 发表于 2020-9-20 15:02:17

qcyQCY 发表于 2020-9-20 15:01
想要另一种方法,老哥

一个问题想要多种解决方法

疾风怪盗 发表于 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))
b=a.isin(a.max().values)]
for i in b.index:
    print('成绩最高分数:%s,学号:%s' % (b.loc, i))

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

qcyQCY 发表于 2020-9-20 17:06:42

疾风怪盗 发表于 2020-9-20 16:27
用pandas

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

牛逼,老哥,导入模块,我想都不敢想

qcyQCY 发表于 2020-9-20 17:07:47

qcyQCY 发表于 2020-9-20 17:06
牛逼,老哥,导入模块,我想都不敢想

老哥,你看看这个,不用定义函数能不能操作

qcyQCY 发表于 2020-9-20 17:08:18

qcyQCY 发表于 2020-9-20 17:07
老哥,你看看这个,不用定义函数能不能操作

我是没辙了

疾风怪盗 发表于 2020-9-20 17:18:30

qcyQCY 发表于 2020-9-20 17:08
我是没辙了

这个很难么?不要函数就把函数内容拆出来。。。。。。是我理解不对么?
a =
# 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)

qcyQCY 发表于 2020-9-20 19:40:07

qcyQCY 发表于 2020-9-20 17:06
牛逼,老哥,导入模块,我想都不敢想

a=
er=input('请输入查找的数字:')
value=int(er)
if value in a:
    q=a.index(value)
    a.insert(q,44)
    print("插入成功!")



我刚刚又发现一种很简单的方法
else:
    print('没有找到!')

疾风怪盗 发表于 2020-9-20 19:50:50

qcyQCY 发表于 2020-9-20 19:40
a=
er=input('请输入查找的数字:')
value=int(er)


{:10_258:}你这写的,不是和我的一样的么。。。。。。。。。。

BSOD 发表于 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.append(k)

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

print('参加考试的人数为:%s,平均分数:%.2s' % (count, avg))
print('成绩最高分数:%s,学号:%s' % (max_value, max_numbers))
不知道是不是这样

挥舞乾坤 发表于 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))

qcyQCY 发表于 2020-9-23 19:23:46

BSOD 发表于 2020-9-20 22:05
不知道是不是这样

这有一个成绩
应该有两个

疾风怪盗 发表于 2020-9-24 22:40:11

{:10_312:}这帖子,这么久了,提供了这么多方案,也该解决了吧
敢不敢结了帖子。。。。。。

昨非 发表于 2020-9-24 23:19:12

确实,楼主该结帖了,养成个好习惯{:10_277:}

linke.zhanghu 发表于 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}')

就是多利用了几个列表的小技巧而已

wujichen12 发表于 2020-9-25 08:38:04

很实用,谢谢
页: [1]
查看完整版本: python字典