具有默认值的嵌套字典

2024-03-29

有没有办法制作一个嵌套字典,这样我就可以说mydict[x][y][z] += 1, where mydict[x][y][z]以前不存在,默认为 0(递增后为 1)?

我研究了类似问题的答案,你可以说mydict[x][y][z] = 1 using defaultdict来自collections class (在python中声明一个多维字典 https://stackoverflow.com/questions/29348345/declaring-a-multi-dimensional-dictionary-in-python),但这不允许您采用默认值然后递增。


是的,您可以使用collections module:

from collections import defaultdict, Counter

d = defaultdict(lambda: defaultdict(lambda: Counter()))

d['A']['B']['C'] += 1

# defaultdict(<function __main__.<lambda>>,
#             {'A': defaultdict(<function __main__.<lambda>.<locals>.<lambda>>,
#                          {'B': Counter({'C': 1})})})

请注意,这也可以通过仅使用嵌套来实现defaultdict:

d = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))

然而,鉴于Counter是为了增加整数的特定目的而创建的,这将是我更喜欢的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有默认值的嵌套字典 的相关文章

随机推荐

  • 具有可比较列表与 TreeSet

    选项 1 创建一个实现 Comparable 的列表 并在每次添加值时使用 collections sort List l 对它进行排序 选项 2 创建一个 TreeSet 它始终保持排序 哪一个会更快 我问这个是因为 List 为我提供了
  • git am 错误:“补丁不适用”

    我正在尝试使用 git 将多个提交从一个项目移动到第二个类似的项目 所以我创建了一个补丁 包含 5 个提交 git format patch 4af51 stdout gt changes patch 然后将补丁移动到第二个项目的文件夹并想
  • 如何在 C# 中使用 SendMessageTimeout 获取窗口标题

    我需要枚举所有打开的窗口并获取它们的标题 但问题是某些窗口属于同一进程但属于不同的线程 该线程被阻塞 等待互斥体 因此 我不能对属于我自己的进程的窗口使用 GetWindowText 因为这将导致 SendMessage 调用 这将阻止我的
  • 向类型类实例添加类约束

    我正在尝试实现康托配对函数 作为 通用 Pair 类型类 如下所示 module Pair Pair CantorPair where Pair interface class Pair p where pi a gt a gt p a k
  • 如何使用 C++ 从 RAM 运行可执行文件?

    如何使用 C 从 RAM 运行可执行文件 可执行文件位于 RAM 中 并且我知道地址 如何从我的程序中调用该程序 这类事情通常来自世界的黑暗角落 结合像metasploit这样的工具 用内存创建进程会很棒 因此一些人尝试重新实现Create
  • 向应用程序小部件发送更新广播

    我有一个带有配置活动的应用程序小部件 我想在单击活动中的 确定 按钮时触发小部件的更新 我写了这段代码 Intent initialUpdateIntent new Intent AppWidgetManager ACTION APPWID
  • 为什么 firefox/chrome 显示的页面与 IE8 不同?

    当我看着 我看到最新版本 with Firefox and Chrome 但是一个旧版本 with IE8 另外 通过屏幕抓取PHP Curl给我一个旧版本 我试过了CTRL 刷新在 IE8 中 但我无法让它向我显示最新版本 无论heade
  • 警告:格式字符串不是字符串文字[重复]

    这个问题在这里已经有答案了 我从以下行收到 格式字符串不是字符串文字 警告 NSString formattedString NSString alloc initWithFormat format arguments valist 我在以
  • 从 Delphi 7 中的 C++ DLL 接收字符串数组

    我正在用 C 创建一个 DLL 它将在 Delphi 7 项目中使用 这个问题与this one https codereview stackexchange com questions 43347 produce an array of
  • 尝试从列表中删除对象时迭代期间的并发修改

    我试图在多个列表中循环 最后比较它们的名称 如果它们不匹配 则将其从列表中删除 但我收到此错误 迭代期间并发修改 虽然我已经复制了原始列表只是为了避免这个错误 但仍然得到它 我尝试的是 globals filteredPollsList p
  • 在 R 中获取生存估计

    我试图获得不同人在特定时间的生存估计 我的代码如下 s Surv outcome 1 outcome 2 survplot survfit s person list 1 plot survplot mark time FALSE summ
  • 什么是serialVersionUID?为什么要使用它?

    当出现以下情况时 Eclipse 会发出警告serialVersionUID不见了 可序列化类 Foo 未声明静态final long 类型的serialVersionUID 字段 What is serialVersionUID为什么它很
  • 如何优化Excel VBA点击url

    VBA 运行时出现运行时错误 70 有时代码运行顺利 但有时则不然 想知道是否有更可靠的代码可以继续 它总是停在If link innerHTML Balance Sheet Then end if Public Sub Get Dim i
  • 如何以编程方式将 QMainWindow 大小调整为其最小大小

    当我有一个带有网格布局的 QMainWindow 时 当用鼠标调整它的大小时 它不会低于其中所有控件正确显示所需的最小尺寸 在我的应用程序中 我有时会以编程方式隐藏控件 但随后窗口保持相同的大小 其余控件看起来分散开来 它们之间的空间太大
  • 将图像文件打开到 WriteableBitmap

    问题就在这里 我想从本地驱动器打开一个文件 然后将其放入 WritableBitmap 中 以便我可以编辑它 但问题是 我无法从 Uri 或类似的东西创建 WritableBitmap 我也知道如何将文件打开到 BitmapImage 中
  • 设置EditText的HINT多行

    我知道我可以更改 EditeText 文本的行数 但我也可以更改 EditText 提示的行数吗 我在网上找不到解决方案 谢谢您的帮助 My Code Override public void onCreateOptionsMenu Men
  • 在控制台窗口中以横向树格式漂亮打印输出

    我有一本使用 Python 创建的字典 d a Adam Book 4 b Bill TV 6 Jill Sports 1 Bill Computer 5 c Bill Sports 3 d Quin Computer 3 Adam Com
  • 为什么我的 scrapy 蜘蛛没有遵循我的项目解析函数中的请求回调?

    我正在抓取一个网站来检查各种产品的库存状态 不幸的是 这需要实际单击产品页面上的 添加到购物车 并检查下一页的消息以确定是否有库存 即它需要解析两个响应 我跟着优秀的文档 http doc scrapy org en latest topi
  • jul-to-slf4j 仅适用于特定类别

    我正在 Websphere Application Server 上使用 Primefaces 开发 JSF 项目 由于 Primefaces 使用 java util logging 因此我使用 jul to slf4j Bridge 将
  • 具有默认值的嵌套字典

    有没有办法制作一个嵌套字典 这样我就可以说mydict x y z 1 where mydict x y z 以前不存在 默认为 0 递增后为 1 我研究了类似问题的答案 你可以说mydict x y z 1 using defaultdi