Python内置的一种极其强大的生成字典的表达式。返回结果必须是字典
需求1:假设有20个学生,学生的分数在60~100之间,筛选出成绩在90分以上的学生
方法一:使用for循环生成字典
import random
stu = {}
for i in range(20):
name = 'westos' + str(i)
score = random.randint(60,100)
stu[name] = score
highscore = {}
for name,score in stu.items():
if score > 90:
highscore[name] =score
print(highscore)
方法二:字典生成式
import random
stu = {}
for i in range(20):
name = 'westos' + str(i)
score = random.randint(60,100)
stu[name] = score
print({name:score for name, score in stu.items() if score > 90 })
需求2:将所有的key值都变成大写
方法一:for 循环
d = dict(a = 1 ,b = 2 )
new_d= {}
for i in d :
new_d [i.upper()] = d[i]
print('n:',new_d)
方法二:字典生成式
d = dict(a=1, b=2)
print({k.upper(): v for k, v in d.items()})
效果展示
{'A': 1, 'B': 2}
需求3:大小写的key值合并,统一以小写输出
方法一:for循环
d = dict(a=1, b=2, c=3, B=9, A=10)
new_d = {}
for k,v in d.items():
low_k = k.lower()
if low_k not in new_d:
new_d[low_k] = v
else:
new_d[low_k] += v
print(new_d)
方法二:字典生成式
d = dict(a=1, b=2, c=3, B=9, A=10)
print({k.lower():d.get(k.upper(),0)+d.get(k.lower(),0) for k in d})