我有一本包含字典的字典,其中可能还包含字典,例如
dictionary = {'ID': 0001, 'Name': 'made up name', 'Transactions':
{'Transaction Ref': 'a1', 'Transaction Details':
{'Bill To': 'abc', 'Ship To': 'def', 'Product': 'Widget A'
...} ...} ... }
目前,我正在打开包装以获取ID 001的“开单至”,“交易参考” a1,如下所示:
if dictionary['ID'] == 001:
transactions = dictionary['Transactions']
if transactions['Transaction Ref'] == 'a1':
transaction_details = transactions['Transaction Details']
bill_to = transaction_details['Bill To']
我忍不住觉得这有点笨拙,尤其是最后两行-我觉得以下内容应该可以工作:
bill_to = transactions['Transaction Details']['Bill To']
有没有一种更简单的方法可以向下钻取嵌套字典而不必解压缩临时变量?
bill_to = transactions['Transaction Details']['Bill To']
实际有效。transactions['Transaction Details']
是表示的表达式dict
,因此您可以在其中进行查找。对于实际程序,我更喜欢使用面向对象的方法来嵌套字典。collections.namedtuple
对于快速设置一堆只包含数据(而没有其自身行为)的类特别有用。
有一个警告:在某些设置中,您可能希望KeyError
在进行查找时捕捉到该信息,并且在该设置中也可以使用,因此很难确定哪个字典查找失败:
try:
bill_to = transactions['Transaction Details']['Bill To']
except KeyError:
# which of the two lookups failed?
# we don't know unless we inspect the exception;
# but it's easier to do the lookup and error handling in two steps
问题内容: 我是python的新手,需要帮助解决问题: 我有像这样的字典 除了做其他事情,我们还有其他方法可以获取三个价值吗? ? 问题答案: 您可以在每个字典上使用get()。确保已为每个访问添加了“无”检查。
我有一个JSON API响应,如下所示: 我正在使用Python并尝试访问响应中的第一个“下载”值。所以我需要从sales\u list(目录中的列表)开始 我见过关于在列表中的字典或嵌套字典中访问值的问题。但是我对如何在字典中的列表和列表中的字典之间/之间导航有点困惑。任何帮助都将不胜感激。
问题内容: 我的应用程序中有一个非常复杂的数据结构,需要对其进行操作。我试图跟踪玩家在他们的花园中有多少种错误。有十种错误,每种错误都有十种模式,每种模式都有十种颜色。所以可能有1000个独特的错误,我想追踪玩家每种类型的错误数量。嵌套的字典如下所示: 我没有使用此语法的任何错误或投诉。 当我想增加播放器的错误收集时,请执行以下操作: 我收到此错误: 字符串不能转换为’DictionaryInde
问题内容: 我有一个复杂的字典结构,我想通过一个键列表来访问该字典以解决正确的项。 要么 我已经制作了下面的代码,但是可以肯定的是,如果有人有想法,那么我可以找到一种更好,更有效的方法。 问题答案: 使用遍历词典: 并重用以查找用于存储值的位置: 除了最后一个元素外,所有元素都需要查找“父”字典以将值添加到其中,然后使用最后一个元素将值设置为右键。 演示: 请注意,样式指南规定了函数的名称。上面的
我正在努力编写一本嵌套非常多的词典。只有当字典中有“name”:“bingo”时,我才需要获取字典的“main_id”。 我有解决办法,但在我看来是相当丑陋的。 我想知道: 有更好更干净的方法来实现它(总是;)
问题内容: 搜索一个值并获取父词典名称(键): 在以上字典中,我需要搜索类似的值:。其中,字典中没有任何值重复。如何搜索?因此它应该返回字典中的父键。 请注意 :解决方案应在 未修改的情况下 适用 于 Python 2.7和Python 3.3。 问题答案: 这是对嵌套dict的迭代遍历,还可以跟踪导致特定点的所有键。因此,一旦您在字典中找到正确的值,您就已经具有获取该值所需的键。 如果将以下代码