统计各个国家或地区学校数量的python代码(d.get()函数的灵活应用、跳过空行的两种方法)

本文总结了世界著名大学如麻省理工、斯坦福等在美国,牛津、剑桥在英国,以及中国的清华大学等的分布情况,展示了不同国家在高等教育领域的卓越贡献。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

  • 原始文件如下:
1,麻省理工学院,美国

2,斯坦福大学,美国

3,哈佛大学,美国

4,加州理工学院,美国

5,牛津大学,英国

6,剑桥大学,英国

7,苏黎世联邦理工学院,瑞士

8,帝国理工学院,英国

9,芝加哥大学,美国

10,伦敦大学学院,英国

11,新加坡国立大学,新加坡

12,南洋理工大学,新加坡

13,普林斯顿大学,美国

14,康奈尔大学,美国

15,耶鲁大学,美国

16,哥伦比亚大学,美国

17,清华大学,中国

18,爱丁堡大学,英国

19,宾夕法尼亚大学,美国

20,密歇根大学安娜堡分校,美国

本人代码(d.get()函数的灵活应用)

f = open('data.txt', 'r',encoding="utf-8")
unis = {}

for line in f:
    if line.strip(): #跳过空行的第一种方法
        line = line.strip().split(',')
        unis[line[2]] = unis.get(line[2],[]) + [line[1]]

for d in unis:
    print('{:>4}: {:>4} : {}'.format(d,len(unis[d]),",".join(unis[d])))

本人代码(使用append()函数对values列表进行操作)

f = open('data.txt', 'r',encoding="utf-8")
unis = {}

for line in f:
        if line.strip(): #因为存在空行
            line = line.strip().split(',') #虽然去掉空行了,但是因为存在换行,所以行尾都有\n,故使用strip()函数
            country = line[2]
            scholl = line[1]
            if country not in unis: #如果字典中没有对应的国家,那么就写入一个新的key,value对
                unis[country] = [scholl] #因为list才能使用append(),所以这里加了[]
            else:
                unis[country].append(line[1]) #如果学校是同一个国家的,那么就在对应国家后面增添一个values值
for d in unis:
    print('{:>4}: {:>4} : {}'.format(d,len(unis[d]),unis[d]))
  • 结果如下:
 美国:   11 : ['麻省理工学院', '斯坦福大学', '哈佛大学', '加州理工学院', '芝加哥大学', '普林斯顿大学', '康奈尔大学', '耶鲁大学', '哥伦比亚大学', '宾夕法尼亚大学', '密歇根大学安娜堡分校']
  英国:    5 : ['牛津大学', '剑桥大学', '帝国理工学院', '伦敦大学学院', '爱丁堡大学']
  瑞士:    1 : ['苏黎世联邦理工学院']
 新加坡:    2 : ['新加坡国立大学', '南洋理工大学']
  中国:    1 : ['清华大学']
  • 结果中,各个学校是以列表形式出现的,可以对最后一行代码做如下改变,使得结果看起来更舒服一些。
for d in unis:
    print('{:>4}: {:>4} : {}'.format(d,len(unis[d]),",".join(unis[d])))
 美国:   11 : 麻省理工学院,斯坦福大学,哈佛大学,加州理工学院,芝加哥大学,普林斯顿大学,康奈尔大学,耶鲁大学,哥伦比亚大学,宾夕法尼亚大学,密歇根大学安娜堡分校
  英国:    5 : 牛津大学,剑桥大学,帝国理工学院,伦敦大学学院,爱丁堡大学
  瑞士:    1 : 苏黎世联邦理工学院
 新加坡:    2 : 新加坡国立大学,南洋理工大学
  中国:    1 : 清华大学

书上参考代码(跳过空行的第二种方法)

f = open('data.txt', 'r')  # 读取文本
unis = {"美国": [], "英国": [], "瑞士": [], "新加坡": [], "中国": []}  # 创建字典
for line in f:  # 遍历文本
    if line == "\n":  # 如果文本是空行就跳过
        continue
    else:
        text = line.split(",")  # 用逗号分割文本
        text[2] = text[2].replace("\n", "")  # 替换国家文本尾部换行符号
        unis[text[2]].append(text[1])  # 将学校名称添加到字典值的列表中
f.close()
for d in unis:
    print('{:>4}: {:>4} : {}'.format(d, len(unis[d]), ",".join(unis[d])))  # 遍历字典,格式化输出内容
  • 书上参考代码的一个弊端是,如果国家或地区太多,那么建立如上字典的工作量就会比较大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值