Python 字典和集合推导式详解

一、字典推导式 

    它与列表推导式类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要写在{}内部。

语法一:{ key_exp : value_exp for key, value in collection  if condition }  

  语法1 使用 如下:

# 1:获取key是大写字母的对应值
dd1 = { "NAME":'zhang', "age":20, "flag":False, "SAY":"hello", "lesson":"python教程" }
dd2={k:v for k,v in dd1.items() if k.isupper()}
print(dd2)

# 2:将所有key设置为首字母大写,其余小写
dd3={k.title():v for k,v in dd1.items() }
print(dd3)


# 3:根据列表中的字符串,生成以列表中字符串为键,字符串长度为值的字典
ll = [ 'python', 'https://www.python.org/' ]
dd5={k:len(k) for k in ll}
print(dd5)

# 4:利用zip函数推导字典
names=['zhang','mike','baby']
age=[18,21,16]
dd={k:v for k,v in zip(names,age)}
print(dd)

 

# 字典 stocks 包含了股票代码和价格
stocks = {
    'AAPL': 121,
    'AMZN': 3380,
    'MSFT': 219,
    'BIIB': 280,
    'QDEL': 266,
    'LVGO': 144
}

# 1.将每个股票的价格都增加3% =》1+0.03=1.03
dd={k:v*1.03 for k,v in stocks.items()}
print(dd)

#2.查询价格大于 250 的股票
dd={k:v for k,v in stocks.items() if v>250}
print(dd)

 

语法二:{ key_exp : value_exp1 if condition else value_exp2 for key, value in  collection  }

  语法2使用如下: 

# 1:将所有key是大写字母的值统一设置为None
dd4={k:v if k.islower() else None for k,v in dd1.items()}
print(dd4)

 

二、集合推导式

  它与列表推导式类似,也是通过循环和条件判断表达式配合使用, 唯一不一样的就是外面使用的是大括号{ }

语法一: { 表达式 for 变量 in 序列 if 条件 }

 使用语法1如下:

# 1.计算列表中每个值的平方,集合自带去重
ss = { x**2 for x in [1,2,3,3,2,1] }
print(ss)

# 2.生成5个随机数1-10之间的数的集合,由于set自动去重功能,所以可能生成的数不能确定的
ss={random.randint(1,10) for i in range(5)}
print(ss)

# 3.可以提取字典中的值或键为集合,set是无序
dd = { "name": "吴均", "age": 18, "sex": "男" }
ss={v for k,v in dd.items()}
print(ss)

# 4.输出1-20以内的偶数集合
ss={i for i in range(1,21) if i%2==0}
print(ss)

 

 

语法二: { 表达式1 if 条件 else 表达式2 for 变量 in 序列 }

 使用语法2如下: 

# 提取字典中的键为name时,则为None,其他的为value值集合。注意:set会自动去重!!
dd = { "name": "吴均", "age": 18, "sex": "男" }
ss={None if k=='name' else v for k,v in dd.items()}
print(ss)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值