Python 字典的两个好用功能:推导式和条件表达式

字典推导式

字典推导式是一种类似于列表推导式的语法,用于快速创建字典。它遍历一个可迭代对象(如列表、元组或字符串),并为每个元素生成一个键值对。

# 创建一个字典,将数字映射到键值平方  
squares = {x: x**2 for x in range(1, 6)}  
print(squares)  # 输出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

字典条件表达式

可以在字典推导式中使用条件表达式(也称为三元运算符)来根据某些条件生成键值对。、

# 创建一个字典,只包含偶数的平方  
squares = {x: x**2 for x in range(1, 6) if x % 2 == 0}  
print(squares)  # 输出: {2: 4, 4: 16}

结合使用推导式和条件表达式

# 创建一个字典,根据数字的不同范围赋予不同的字符串值  
number_dict = {x: 'one' if x == 1 else 'few' if 1 < x < 5 else 'many' for x in range(1, 7)}  
print(number_dict)  
# 输出: {1: 'one', 2: 'few', 3: 'few', 4: 'few', 5: 'few', 6: 'many'}

小彩蛋[doge]:

字典推导式+列表推导式:

示例1:

 result_dict = {  
    key: [value ** 2 for value in range(1, 4)]  # 列表推导式,计算平方值  
    for key in ['A', 'B', 'C']  # 字典推导式,遍历键  
    if key != 'B'  # 条件表达式,排除键'B'  
}  
  
print(result_dict)  
# 输出: {'A': [1, 4, 9], 'C': [1, 4, 9]}

示例2:

user_ids = [1, 2, 3, 4]  

user_data = {  
    user_id: [  # 对于每个用户ID,生成一个包含用户属性的列表  
        {'name': f'User {user_id}', 'age': age, 'active': age < 30}  # 每个属性字典包含姓名、年龄和活动状态  
        for age in range(20, 41, 5)  # 年龄范围从20到40,步长为5  
    ]  
    for user_id in user_ids  # 遍历每个用户ID  
}  
  
print(user_data)
 
'''输出:
{  
    1: [{'name': 'User 1', 'age': 20, 'active': True}, {'name': 'User 1', 'age': 25, 'active': True}, {'name': 'User 1', 'age': 30, 'active': False}, {'name': 'User 1', 'age': 35, 'active': False}, {'name': 'User 1', 'age': 40, 'active': False}],  
    2: [{'name': 'User 2', 'age': 20, 'active': True}, {'name': 'User 2', 'age': 25, 'active': True}, {'name': 'User 2', 'age': 30, 'active': False}, {'name': 'User 2', 'age': 35, 'active': False}, {'name': 'User 2', 'age': 40, 'active': False}],  
    # ... (用户ID 3和4同上)  
}

python的数据结构还是挺符合人类直觉的,使用时可以大胆尝试,毕竟...

跑不起来大不了再改嘛¯\_(´◔​∀◔`)_/¯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值