当前位置:首页>python>Python 高级容器:collections`模块完全指南

Python 高级容器:collections`模块完全指南

  • 2026-08-21 14:09:24
Python 高级容器:collections`模块完全指南

Python 内置的 dictlistsettuple 已经够用,但在特定场景下,标准库 collections 提供了更顺手、更高效的选择。本文基于 Python 3.12,系统梳理 collections 中六大核心容器:namedtupledequeCounterdefaultdictOrderedDictChainMap


一、模块概览

collections 实现了面向特定场景的容器类型,可作为内置容器的替代或增强:

类型
用途
namedtuple()
带字段名的元组工厂函数
deque
双端队列,两端增删均为 O(1)
Counter
可哈希对象计数器
defaultdict
缺失键时自动调用工厂函数
OrderedDict
有序字典,擅长重排序操作
ChainMap
多字典合并为单一视图
import collectionsprint([name for name indir(collections) ifnot name.startswith("_")])# ['ChainMap', 'Counter', 'OrderedDict', 'UserDict', 'UserList',#  'UserString', 'defaultdict', 'deque', 'namedtuple']

二、namedtuple 具名元组

2.1 为什么需要它

普通元组靠索引访问,可读性差。namedtuple 给每个位置赋予名字,既能按字段名访问,又保持元组的不可变性。

from collections import namedtuplePoint = namedtuple("Point", ["x""y"])p = Point(11, y=22)print(p.x + p.y)   # 33print(p[0] + p[1]) # 33x, y = p            # 支持解包print(p)            # Point(x=11, y=22)

2.2 创建语法

collections.namedtuple(    typename,           # 新子类的类名    field_names,        # 字段名,如 ['x', 'y'] 或 'x y'    *,    rename=False,       # 无效字段名自动重命名    defaults=None,      # 默认值元组    module=None,        # 设置 __module__ 属性)

2.3 特有方法与属性

方法/属性
说明
_make(iterable)
从序列创建实例
_asdict()
转为字典(3.8+ 返回普通 dict
_replace(**kwargs)
返回替换部分字段的新实例
_fields
字段名元组
_field_defaults
带默认值的字段字典
Point = namedtuple("Point", ["x""y"])p = Point(1122)p2 = Point._make([3344])print(p2._asdict())          # {'x': 33, 'y': 44}  ← 3.8+ 为 dict,非 OrderedDictp3 = p2._replace(x=99)print(p3)                    # Point(x=99, y=44)# 组合字段创建新类型Color = namedtuple("Color""red green blue")Pixel = namedtuple("Pixel", Point._fields + Color._fields)pi = Pixel(11221282550)print(pi)  # Pixel(x=11, y=22, red=128, green=255, blue=0)# 默认值(3.7+)Account = namedtuple("Account", ["type""balance"], defaults=[0])print(Account._field_defaults)  # {'balance': 0}a = Account("premium")print(a)  # Account(type='premium', balance=0)

2.4 Python 3.12 下的替代方案

新项目更推荐 dataclass(frozen=True) 或 typing.NamedTuple,IDE 支持更好、类型提示更完整:

from dataclasses import dataclass@dataclass(frozen=True)classPoint:    x: int    y: intp = Point(1122)print(p.x)  # 11

namedtuple 仍适合轻量、无依赖的场景,以及需要与旧代码兼容的项目。


三、deque 双端队列

3.1 核心特性

deque(double-ended queue,读作 "deck")支持两端 O(1) 的追加与弹出,线程安全,内存效率高。

相比 listdeque 在 pop(0)insert(0, v) 等操作上不会触发 O(n) 的整体移动。

from collections import dequed = deque("ghi")d.append("j")        # 右端追加d.appendleft("f")    # 左端追加print(d)             # deque(['f', 'g', 'h', 'i', 'j'])print(d.pop())       # jprint(d.popleft())   # fprint(list(d))       # ['g', 'h', 'i']

3.2 主要方法

方法
说明
append(x)
 / appendleft(x)
右/左端追加
extend(iterable)
 / extendleft(iterable)
右/左端批量扩展
pop()
 / popleft()
右/左端弹出
rotate(n=1)
向右循环移动 n 步(负数则向左)
maxlen
只读属性,最大长度限制
clear()
 / copy() / count(x) / index(x)
常规操作

3.3 定长队列(滑动窗口)

设置 maxlen 后,超出长度时从另一端自动弹出旧元素,适合"最近 N 条记录"场景:

recent = deque(maxlen=3)for item inrange(5):    recent.append(item)print(list(recent))# [0]# [0, 1]# [0, 1, 2]# [1, 2, 3]# [2, 3, 4]

3.4 实战:轮询调度器

defroundrobin(*iterables):"""roundrobin('ABC', 'D', 'EF') --> A D E B F C"""    iterators = deque(map(iter, iterables))while iterators:try:whileTrue:yieldnext(iterators[0])                iterators.rotate(-1)except StopIteration:            iterators.popleft()

四、Counter 计数器

4.1 基本用法

Counter 是 dict 的子类,用于统计可哈希对象出现次数。访问不存在的键返回 0,不会抛出 KeyError

from collections import Counter# 从列表计数L = ["red""blue""red""green""blue""blue"]print(Counter(L))  # Counter({'blue': 3, 'red': 2, 'green': 1})# 从字符串计数print(Counter("gallahad"))  # Counter({'g': 1, 'a': 3, 'l': 2, 'h': 1, 'd': 1})# 从字典初始化print(Counter({"red"4"blue"2}))  # Counter({'red': 4, 'blue': 2})

4.2 特有方法

c = Counter(a=4, b=2, c=0, d=-2)# 按首次出现顺序,重复计数值次print(list(c.elements()))  # ['a', 'a', 'a', 'a', 'b', 'b']# 最常见的 n 个元素print(Counter("abracadabra").most_common(3))# [('a', 5), ('b', 2), ('r', 2)]# 减法(不是替换,而是减去)c.subtract({"a"1"b"2"c"3"d"4})print(c)  # Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})# 总计数(3.10+)print(Counter(a=10, b=5, c=3).total())  # 18

4.3 数学运算(3.10+)

c = Counter(a=3, b=-1, c=-2)d = Counter(a=6, b=2, c=-4)print(c + d)  # Counter({'a': 9, 'b': 1})print(c - d)  # Counter({'c': 2})  ← 结果 ≤ 0 的键被删除print(c & d)  # Counter({'a': 3})  ← 取各键最小值print(c | d)  # Counter({'a': 6, 'b': 2, 'c': -2})  ← 取各键最大值# 一元运算print(+c)  # Counter({'a': 3, 'b': -1, 'c': -2})print(-c)  # Counter({'b': 1, 'c': 2})# 富比较(3.10+:不存在的元素视为计数 0)print(c == d)   # Falseprint(c >= d)   # False

注意Counter.update() 是累加计数,不是字典式的覆盖更新;也没有 fromkeys() 方法。


五、defaultdict — 带默认值的字典

5.1 基本用法

defaultdict 在键不存在时,自动调用 default_factory 生成默认值,而不是抛出 KeyError

from collections import defaultdictd = defaultdict(int)print(d["a"])  # 0(自动调用 int())

5.2 __missing__ 机制

只有 d[key] 会触发 __missing__d.get(key) 仍返回 None,行为与普通 dict 一致。

5.3 常见模式

分组聚合(list 工厂)

s = [("yellow"1), ("blue"2), ("yellow"3), ("blue"4), ("red"1)]d = defaultdict(list)for k, v in s:    d[k].append(v)print(dict(d))# {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]}

字符计数(int 工厂)

d = defaultdict(int)for ch in"mississippi":    d[ch] += 1print(sorted(d.items()))  # [('i', 4), ('m', 1), ('p', 2), ('s', 4)]

去重集合(set 工厂)

d = defaultdict(set)for color, val in [("red"1), ("blue"2), ("red"3), ("blue"4), ("red"1)]:    d[color].add(val)print(dict(d))  # {'red': {1, 3}, 'blue': {2, 4}}

自定义默认值(lambda 工厂)

d = defaultdict(lambda"<missing>")d.update(name="John", action="ran")print("%(name)s %(action)s to %(object)s" % d)# John ran to <missing>

六、OrderedDict 有序字典

6.1 还需要它吗?

自 Python 3.7 起,内置 dict 已保证插入顺序;3.8 起 dict 也支持 reversed()。因此,单纯为了"记住顺序",dict 通常已足够。

OrderedDict 仍有独特价值:

特性
普通 dict
OrderedDict
插入顺序
✅(3.7+ 保证)
move_to_end()
popitem(last=False)
 弹出首项
顺序敏感的相等比较
频繁重排序性能
一般
更优(LRU 缓存等)
from collections import OrderedDict# 顺序敏感比较od1 = OrderedDict([(11), (22)])od2 = OrderedDict([(22), (11)])print(od1 == od2)  # Falsed1 = {1122}d2 = {2211}print(d1 == d2)  # True

6.2 常用方法

d = OrderedDict.fromkeys("abcde")# popitem:LIFO(默认)或 FIFOprint(d.popitem())       # ('e', None)print(d.popitem(last=False))  # ('a', None)# move_to_end:将元素移到末尾或开头d = OrderedDict.fromkeys("abcde")d.move_to_end("b")print(d)  # OrderedDict([('a', None), ('c', None), ('d', None), ('e', None), ('b', None)])d.move_to_end("b", last=False)print(d)  # OrderedDict([('b', None), ('a', None), ('c', None), ('d', None), ('e', None)])# 逆序迭代print(list(reversed(d)))  # ['e', 'd', 'c', 'a', 'b']

6.3 Python 3.12 变化:repr 格式更新

3.12 起,OrderedDict 的 repr 输出改为与普通 dict 一致的花括号格式:

from collections import OrderedDictod = OrderedDict([("c"1), ("b"2), ("a"3)])# Python 3.12+print(repr(od))# OrderedDict({'c': 1, 'b': 2, 'a': 3})# Python 3.11 及更早# OrderedDict([('c', 1), ('b', 2), ('a', 3)])

若测试或日志中硬编码了旧格式字符串,升级到 3.12 后需要相应调整。

6.4 实战:简易 LRU 缓存

from collections import OrderedDictclassLRUCache:def__init__(self, capacity: int):self.cache = OrderedDict()self.capacity = capacitydefget(self, key):if key notinself.cache:return -1self.cache.move_to_end(key)returnself.cache[key]defput(self, key, value):if key inself.cache:self.cache.move_to_end(key)self.cache[key] = valueiflen(self.cache) > self.capacity:self.cache.popitem(last=False)  # 弹出最久未使用的

七、ChainMap — 链式字典

7.1 基本用法

ChainMap 将多个字典组合为单一视图,查找时按顺序从前到后搜索,写入只作用于第一个字典

from collections import ChainMapbaseline = {"music""bach""art""rembrandt"}adjustments = {"art""van gogh""opera""carmen"}cm = ChainMap(adjustments, baseline)print(cm["art"])    # van gogh(adjustments 优先)print(cm["music"])  # bach(baseline 中找到)print(list(cm))     # ['music', 'art', 'opera']

7.2 特有属性与方法

print(cm.maps)# [{'art': 'van gogh', 'opera': 'carmen'}, {'music': 'bach', 'art': 'rembrandt'}]# 创建子上下文(不影响父级)child = cm.new_child({"new_key"666})print(child)# ChainMap({'new_key': 666}, {'art': 'van gogh', ...}, {'music': 'bach', ...})# 跳过第一个映射print(cm.parents)# ChainMap({'music': 'bach', 'art': 'rembrandt'})

7.3 实战场景

命令行参数 > 环境变量 > 默认值

import osimport argparsefrom collections import ChainMapdefaults = {"color""red""user""guest"}parser = argparse.ArgumentParser()parser.add_argument("-u""--user")parser.add_argument("-c""--color")namespace = parser.parse_args()cli_args = {k: v for k, v invars(namespace).items() if v isnotNone}config = ChainMap(cli_args, os.environ, defaults)print(config["color"])  # 命令行 > 环境变量 > 默认值print(config["user"])

模拟 Python 作用域链

import builtinsfrom collections import ChainMappylookup = ChainMap(locals(), globals(), vars(builtins))

多模块共享库存(引用存储,修改实时反映)

from collections import ChainMaptoys = {"Blocks"30"Monopoly"20}computers = {"iMac"1000"Chromebook"1000}clothing = {"Jeans"40"T-shirt"10}inventory = ChainMap(toys, computers, clothing)print(inventory["Monopoly"])  # 20toys["Nintendo"] = 20# 底层字典修改会反映到 ChainMapprint(inventory["Nintendo"])  # 20

3.9+ 支持 | 和 |= 合并运算符(PEP 584)。


八、选型速查表

需求
推荐容器
固定结构、不可变记录
namedtuple
 / dataclass(frozen=True)
双端队列、滑动窗口、BFS
deque
词频统计、Top-K
Counter
分组聚合、自动初始化
defaultdict
LRU 缓存、顺序敏感比较
OrderedDict
多层配置合并、作用域模拟
ChainMap
仅需插入顺序
普通 dict(3.7+)即可

参考

  • Python 3.12 官方文档 — collections [1]

  • PEP 584 — Merge operators for dict [2]

  • gh-101446: OrderedDict repr 变更 [3]

引用链接

[1] Python 3.12 官方文档 — collections: https://docs.python.org/zh-cn/3.12/library/collections.html[2] PEP 584 — Merge operators for dict: https://peps.python.org/pep-0584/[3] gh-101446: OrderedDict repr 变更: https://github.com/python/cpython/issues/101446

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-22 03:28:13 HTTP/2.0 GET : https://f.mffb.com.cn/a/507485.html
  2. 运行时间 : 0.303523s [ 吞吐率:3.29req/s ] 内存消耗:4,571.42kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b37ff8866bd9c83e2489f3fc80c655e1
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001304s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001321s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.004576s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.055042s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001526s ]
  6. SELECT * FROM `set` [ RunTime:0.005644s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001518s ]
  8. SELECT * FROM `article` WHERE `id` = 507485 LIMIT 1 [ RunTime:0.015934s ]
  9. UPDATE `article` SET `lasttime` = 1787340493 WHERE `id` = 507485 [ RunTime:0.016590s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.001286s ]
  11. SELECT * FROM `article` WHERE `id` < 507485 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.004073s ]
  12. SELECT * FROM `article` WHERE `id` > 507485 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.021186s ]
  13. SELECT * FROM `article` WHERE `id` < 507485 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002869s ]
  14. SELECT * FROM `article` WHERE `id` < 507485 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005367s ]
  15. SELECT * FROM `article` WHERE `id` < 507485 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003469s ]
0.307199s