【问题标题】:List of dictionaries: get() schould loop over list字典列表:get() 应该循环遍历列表
【发布时间】:2012-05-31 10:32:32
【问题描述】:

我知道这很容易实现。

我想要一个类字典,它在构造函数中获取字典列表。

如果你从这个字典中按键读取,字典类应该检查字典列表并返回第一个值。如果没有包含这个键 KeyError 应该像普通的字典一样被抛出。

这个字典容器应该是只读的,仅供我使用。

【问题讨论】:

  • 如果这个字典类内部把这个字典合并成1个字典呢?
  • 新字典应该只包含一个字典列表。不应复制任何数据。

标签: python dictionary


【解决方案1】:

您似乎在描述collections.ChainMap,它将出现在 Python 的下一个版本(3.3,预计将在今年晚些时候发布)中。对于当前/早期版本的 Python,您可以从 collections source code 复制实现。

【讨论】:

【解决方案2】:

没有真正回答这个问题:如果您只是定义将所有字典合并为一个的方法怎么办?为什么要为它开设新课程?
如何合并:How to merge two Python dictionaries in a single expression?
可变参数:Can a variable number of arguments be passed to a function?

【讨论】:

  • 如果这不是真正的答案,那么你应该把它作为对问题的评论,而不是作为答案!
  • 嗯,这不是一个直截了当的答案,但它完成了必需的任务,并且从我的角度来看,它比附加课程更好。
【解决方案3】:

您可以使用此逻辑轻松实现。

  1. 遍历列表中的所有字典。
  2. 对于每个字典,使用key in value 语句查看它是否具有所需的键。
  3. 如果找到值,则从函数中返回值。
  4. 如果您已遍历所有字典,但未找到值,则引发 KeyError 异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2016-08-31
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多