python中的字典生成式

空扰寡人 提交于 2019-12-26 06:56:51

1. 示例1:选出20个学生中成绩在90分以上的学生

需求:假设有20个学生,学生名为westosX,学生分数在60-100之间
#选出成绩在90分以上的学生

import random  #定义一个生成随机数的包

 stuInfo = {}  #定义一个空字典,用来存储学生信息

 for i in range(20):  #i从0到19
     name = 'westos' + str(i) 学生名称为westos加数字,将数字类型转为字符串类型才能与westos连接
     score = random.randint(60,100)  #随机生成60到100的整数作为学生的分数
     stuInfo[name] = score   #给每个name赋value值
 # print(stuInfo)  

  highscore = {}  #定义一个字典,存储高分(成绩在90分以上)
  for name,score in stuInfo.items():  #查看stuInfo字典的name和score键值对
     if score > 90:  #如果分数大于90
         highscore[name] = score  #就将分数赋给highscore字典
 print(highscore)

在这里插入图片描述
字典生成式

print({name: score for name,score in stuInfo.items() if score > 90})

在这里插入图片描述

2. 示例2:将列表key值变为大写

d = dict(a=1,b=2), 将所有的key值变为大写

 d = dict(a=1,b=2)
# print(d)

 new_d = {}  #定义一个空字典
 for i in d:  #遍历字典元素
     new_d[i.upper()] = d[i]  #将元素变成大写放入新字典

 print(new_d)

在这里插入图片描述
字典生成式

print({k.upper(): v for k,v in d.items()})

在这里插入图片描述

3. 示例3:大小写key的值合并,统一以小写输出

d = dict(a=2,b=1,c=2,B=9,A=10)
{'a':12,'b':10,'c':2}
 new_d = {}

 for k,v in d.items():  #遍历字典的键值对
     low_k = k.lower() #将键的大写变成小写赋给low_k变量
     if low_k not in new_d:  如果low_k的元素不在new_d
         new_d[low_k] = v  将对应的value值给new_d
     else:
         new_d[low_k] += v  #否则就给原有的元素加上value值

 print(new_d)

在这里插入图片描述
字典生成式

print({k.lower(): d.get(k.lower(),0) + d.get(k.upper(),0) for k in d})   

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!