Python 字典默认值设置

这篇博客介绍了Python字典在统计字符串出现次数时的几种处理方式,包括使用if条件判断设置默认值、`setdefault()`函数以及`defaultdict`。通过对`defaultdict`的使用,展示了如何更简洁地处理字典中键不存在的情况,并提供了`defaultdict`与其他方法对比的实例。这有助于理解Python字典操作和优化代码效率。

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

# -*- coding: utf-8 -*-
"""
Created on Tue May 17 15:19:30 2022

@author: 12506
"""

#还有dic.get()方法,看参考


# =============================================================================
# # 这种是会报错的,因为字典中没有key的记录
# strings = ('puppy', 'kitten', 'puppy', 'puppy',
#            'weasel', 'puppy', 'kitten', 'puppy')
# counts = {}
#
# for kw in strings:
#     counts[kw] += 1
# =============================================================================

# 改进1:思想:第一次统计时候设置默认值1
# =============================================================================
# strings = ('puppy', 'kitten', 'puppy', 'puppy',
#            'weasel', 'puppy', 'kitten', 'puppy')
# counts = {}
#
# for kw in strings:
#     if kw not in counts:
#         counts[kw] = 1
#     else:
#         counts[kw] += 1
#
# # counts:
# # {'puppy': 5, 'weasel': 1, 'kitten': 2}
#
# =============================================================================

# 改进2:使用setdefault()函数:第一个参数是key的名称,第二个参数是默认值
# =============================================================================
# strings = ('puppy', 'kitten', 'puppy', 'puppy',
#            'weasel', 'puppy', 'kitten', 'puppy')
# counts = {}
#
# for kw in strings:
#     counts[kw] = counts.setdefault(kw, 0) + 1
# =============================================================================


# 以上方法已可以解决  字典默认值问题
# 下面给出一种字典本身提供的默认值功能:collections.defaultdict(factory_function)
# factory_function可以是list、set、str、int:当key不存在时候,返回默认值

# =============================================================================
# from collections import defaultdict
#
# dict1 = defaultdict(int)
# dict2 = defaultdict(set)
# dict3 = defaultdict(str)
# dict4 = defaultdict(list)
# dict1[2] = 'two'
#
# print(dict1[1])
# print(dict2[1])
# print(dict3[1])
# print(dict4[1])
#
# # output:
# # 0
# # set()
# #
# # []
# # dict1: defaultdict(int, {2: 'two', 1: 0})
# =============================================================================
# =============================================================================
# from collections import defaultdict
# # collections 类似一个类,用来初始化一个指定类型的字典
# dic = defaultdict(list)
# # dic: defaultdict(list, {})
# dic['a']
# # dic: defaultdict(list, {'a': []})
# dic['b'].append('qq')
# # dic: defaultdict(list, {'a': [], 'b': ['qq']})
# dic.get('ss')  # dict.get返回指定键的值,如果值不在字典中返回default值
# dic['ss']
# # dic: defaultdict(list, {'a': [], 'b': ['qq'], 'ss': []})
# =============================================================================

# =============================================================================
# # 上面的单词统计
# from collections import defaultdict
#
# strings = ('puppy', 'kitten', 'puppy', 'puppy',
#            'weasel', 'puppy', 'kitten', 'puppy')
# counts = defaultdict(lambda: 0)  # 使用lambda来定义简单的函数
#
# for s in strings:
#     counts[s] += 1
# # counts: defaultdict(<function __main__.<lambda>()>, {'puppy': 5, 'kitten': 2, 'weasel': 1})
# =============================================================================

参考

参考2dic.get

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值