当前位置: 首页 > wzjs >正文

太仓网站开发公司网站建设创业计划书模板范文

太仓网站开发公司,网站建设创业计划书模板范文,黄南网站建设,泰和县城乡建设局网站文章目录 核心特点基本语法常见使用场景1. 分组数据(默认值为列表)2. 计数(默认值为整数)3. 集合操作(默认值为集合)4. 嵌套字典 注意事项与普通字典对比总结1. 键(Key)的类型2. 值&…

文章目录

      • 核心特点
      • 基本语法
      • 常见使用场景
        • 1. 分组数据(默认值为列表)
        • 2. 计数(默认值为整数)
        • 3. 集合操作(默认值为集合)
        • 4. 嵌套字典
      • 注意事项
      • 与普通字典对比
      • 总结
      • 1. 键(Key)的类型
      • 2. 值(Value)的类型
      • 3. `default_factory` 的返回值
      • 4. 嵌套 `defaultdict` 的键值
      • 5. 键和值的可变性总结
      • 常见问题解答
        • Q1:可以用 `list` 作为键吗?
        • Q2:可以用 `defaultdict` 作为键吗?
        • Q3:值可以是函数或类吗?
      • 总结

在 Python 中, defaultdictcollections 模块提供的一个非常有用的类,它是内置字典类型 dict 的子类。 defaultdict 的主要特点是 自动处理字典中不存在的键,避免在使用普通字典时因访问不存在的键而抛出 KeyError 异常。


核心特点

  1. 自动初始化默认值:当访问一个不存在的键时,defaultdict 会调用指定的默认工厂函数(default_factory)生成一个初始值,确定了字典中值的类型
  2. 简化代码:无需手动检查键是否存在,适合需要分组、统计或聚合数据的场景。

基本语法

from collections import defaultdictd = defaultdict(default_factory)
  • default_factory:一个可调用对象(如 list, int, set, str 或自定义函数),用于生成默认值。

常见使用场景

1. 分组数据(默认值为列表)

将数据按键分组,类似 SQL 的 GROUP BY

from collections import defaultdictdata = [("apple", "fruit"), ("carrot", "vegetable"), ("apple", "fruit")]
grouped = defaultdict(list)for name, category in data:grouped[category].append(name)print(grouped)
# 输出:defaultdict(<class 'list'>, {'fruit': ['apple', 'apple'], 'vegetable': ['carrot']})
2. 计数(默认值为整数)

统计元素出现次数:

from collections import defaultdicttext = "apple banana apple orange banana"
words = text.split()
count = defaultdict(int)for word in words:count[word] += 1print(count)
# 输出:defaultdict(<class 'int'>, {'apple': 2, 'banana': 2, 'orange': 1})
3. 集合操作(默认值为集合)

避免重复值:

from collections import defaultdictpairs = [("a", 1), ("b", 2), ("a", 3)]
unique = defaultdict(set)for key, value in pairs:unique[key].add(value)print(unique)
# 输出:defaultdict(<class 'set'>, {'a': {1, 3}, 'b': {2}})
4. 嵌套字典

构建多层嵌套结构:

from collections import defaultdictnested = defaultdict(lambda: defaultdict(int))
nested["fruit"]["apple"] += 1
nested["vegetable"]["carrot"] += 2print(nested["fruit"])        # 输出:defaultdict(<class 'int'>, {'apple': 1})
print(nested["unknown_key"])  # 输出:defaultdict(<class 'int'>, {})

注意事项

  1. default_factory 必须可调用:例如 listint 是类(构造函数),而 list()int() 的返回值不可作为工厂。
  2. 仅对 d[key] 有效:使用 d.get(key)key in d 不会触发默认值生成。
  3. 性能:与普通字典性能接近,适合高频插入操作。

与普通字典对比

# 普通字典需要手动处理缺失键
d = {}
key = "unknown"
if key not in d:d[key] = []
d[key].append(1)# defaultdict 自动处理
d = defaultdict(list)
d["unknown"].append(1)

总结

defaultdict 简化了需要初始化默认值的字典操作,特别适合数据聚合、分组和统计场景。通过合理选择 default_factory(如 listintset 或自定义函数),可以大幅提升代码简洁性和可读性。

在 Python 中,defaultdict 继承自 dict,因此它的 键(Key)和值(Value)的类型规则与普通字典一致,但也有一些细节需要注意。以下是详细说明:


1. 键(Key)的类型

  • 规则:键必须是 不可变类型(Immutable)可哈希(Hashable)

  • 允许的类型

    • 基本类型:int, float, str, bool, None
    • 不可变容器:tuple(但元组内的元素也必须不可变)
    • frozenset(不可变集合)
    • 用户自定义的不可变对象(需正确实现 __hash____eq__ 方法)。
  • 禁止的类型

    • 可变类型:list, dict, set
    • 包含可变元素的 tuple(例如 (1, [2, 3]))。
  • 示例

    from collections import defaultdict# 合法键
    d = defaultdict(int)
    d["apple"] = 10       # 字符串作为键 ✅
    d[123] = 20          # 整数作为键 ✅
    d[(1, 2)] = 30       # 不可变元组作为键 ✅# 非法键(会抛出 TypeError)
    d[[1, 2]] = 40       # 列表不可哈希 ❌
    d[{"a": 1}] = 50     # 字典不可哈希 ❌
    

2. 值(Value)的类型

  • 规则:值可以是 任意类型,包括可变对象。

  • 允许的类型

    • 基本类型(int, float, str 等)
    • 可变容器(list, dict, set
    • 自定义对象、函数、类实例等。
  • 示例

    from collections import defaultdict# 值可以是列表(可变)
    d_list = defaultdict(list)
    d_list["fruits"].append("apple")# 值可以是字典(可变)
    d_dict = defaultdict(dict)
    d_dict["data"]["count"] = 10# 值可以是自定义对象
    class MyClass:passd_obj = defaultdict(MyClass)
    obj = d_obj["instance"]  # 自动生成一个 MyClass 实例
    

3. default_factory 的返回值

default_factory 是一个可调用对象(如 list, int 或自定义函数),它决定了 当键不存在时,默认值的类型。例如:

  • defaultdict(list):默认值是一个空列表([])。
  • defaultdict(int):默认值是 0
  • defaultdict(lambda: "unknown"):默认值是字符串 "unknown"

值的类型完全由 default_factory 决定,与键的类型无关


4. 嵌套 defaultdict 的键值

可以创建多层嵌套的 defaultdict,键的规则依然适用:

from collections import defaultdict# 嵌套 defaultdict(值类型是另一个 defaultdict)
nested = defaultdict(lambda: defaultdict(int))# 合法操作
nested["fruit"]["apple"] += 1      # 键为 "fruit"(字符串)和 "apple"(字符串)
nested[123][(4, 5)] = 2           # 键为 123(整数)和 (4, 5)(不可变元组)# 非法操作(内层键非法)
nested["data"][[1, 2]] = 3        # 内层键为列表,不可哈希 ❌

5. 键和值的可变性总结

特性键(Key)值(Value)
类型限制必须不可变且可哈希可以是任意类型
可变性不可变可以可变
示例int, str, tuplelist, dict, 自定义对象

常见问题解答

Q1:可以用 list 作为键吗?
  • 。列表是可变类型,不可哈希。若需用类似列表的结构作为键,可以转换为不可变的 tuple
Q2:可以用 defaultdict 作为键吗?
  • defaultdict 是可变对象,不可哈希。只有不可变类型(如 frozenset)可以作为键。
Q3:值可以是函数或类吗?
  • 。例如:
    d = defaultdict(type)  # 默认值是类对象
    d["my_class"] = MyClass
    

总结

  • :必须为不可变且可哈希的类型(如 str, int, tuple)。
  • :可以是任意类型(包括可变对象),具体由 default_factory 决定。
  • 嵌套结构:可以自由嵌套 defaultdict,但需确保每一层的键合法。
http://www.dtcms.com/wzjs/564187.html

相关文章:

  • 网站开发项目规划西安建设门户网站
  • 婚恋网站制作要多少钱wordpress 4.0 中文版
  • 免费隐私网站推广appWordPress cos媒体库
  • 做网站seo的公司榆林建设局网站
  • 一般建站公司用什么cms企业网站建设与管理作业
  • 福建省网站建设绩效排名wordpress前台显示双语
  • 传统外贸网站的seo运用如何推广app让别人注册
  • 长春建设网站国家设计师资格证书
  • 如何制作多网页网站黑客做网站
  • 做ar网站网站安全措施
  • 19寸 网站做多大做虚拟币网站需要什么手续
  • 网站开发基本步骤给我推荐一个网站
  • 西安设计网站的公司建筑网站搜图
  • 智能网站建设系统素材网
  • 做网站的那些高清图上哪里找深圳品牌手表
  • 怎么做下载类的网站吗dw怎么做打开网站跳出提示
  • 手机网站开发教程网站开发运营
  • 百度排名 网站标题html主页面模板
  • 响应式学校网站模板滨州网站建设制作
  • 做网站需要前台和后台吗wix怎么做网站教程
  • 商丘家居网站建设西安的网站建设公司
  • 在线做h5 的网站wordpress添加m3u8播放器
  • 平凉市崆峒区建设局网站好用的wordpress主题
  • 泰安北京网站建设公司公司网站网页制作建议
  • 泉港报名网站建设需要中国建设部网站办事大厅
  • 沧州商城网站开发设计wordpress改mip
  • 网站建设栏目大学生做网站和做app
  • 企业网站建设情况汇报登录自己网站的后台 wordpress
  • 青岛网站建设哪个好钢材网站建设
  • 电影网站盗链怎么做加工厂怎么接外贸订单