我有一个复杂的字典结构,我想通过一个键列表来访问该字典以解决正确的项。
dataDict = {
"a":{
"r": 1,
"s": 2,
"t": 3
},
"b":{
"u": 1,
"v": {
"x": 1,
"y": 2,
"z": 3
},
"w": 3
}
}
maplist = ["a", "r"]
要么
maplist = ["b", "v", "y"]
我已经制作了下面的代码,但是可以肯定的是,如果有人有想法,那么我可以找到一种更好,更有效的方法。
# Get a given data from a dictionary with position provided as a list
def getFromDict(dataDict, mapList):
for k in mapList: dataDict = dataDict[k]
return dataDict
# Set a given data in a dictionary with position provided as a list
def setInDict(dataDict, mapList, value):
for k in mapList[:-1]: dataDict = dataDict[k]
dataDict[mapList[-1]] = value
使用reduce()
遍历词典:
from functools import reduce # forward compatibility for Python 3
import operator
def getFromDict(dataDict, mapList):
return reduce(operator.getitem, mapList, dataDict)
并重getFromDict
用以查找用于存储值的位置setInDict()
:
def setInDict(dataDict, mapList, value):
getFromDict(dataDict, mapList[:-1])[mapList[-1]] = value
除了最后一个元素外,所有元素mapList
都需要查找“父”字典以将值添加到其中,然后使用最后一个元素将值设置为右键。
演示:
>>> getFromDict(dataDict, ["a", "r"])
1
>>> getFromDict(dataDict, ["b", "v", "y"])
2
>>> setInDict(dataDict, ["b", "v", "w"], 4)
>>> import pprint
>>> pprint.pprint(dataDict)
{'a': {'r': 1, 's': 2, 't': 3},
'b': {'u': 1, 'v': {'w': 4, 'x': 1, 'y': 2, 'z': 3}, 'w': 3}}
请注意,Python PEP8
样式指南规定了函数的snake_case
名称。上面的方法同样适用于列表或字典和列表的混合,因此名称应为get_by_path()and set_by_path()
:
from functools import reduce # forward compatibility for Python 3
import operator
def get_by_path(root, items):
"""Access a nested object in root by item sequence."""
return reduce(operator.getitem, items, root)
def set_by_path(root, items, value):
"""Set a value in a nested object in root by item sequence."""
get_by_path(root, items[:-1])[items[-1]] = value
我有一个JSON API响应,如下所示: 我正在使用Python并尝试访问响应中的第一个“下载”值。所以我需要从sales\u list(目录中的列表)开始 我见过关于在列表中的字典或嵌套字典中访问值的问题。但是我对如何在字典中的列表和列表中的字典之间/之间导航有点困惑。任何帮助都将不胜感激。
问题内容: 我是python的新手,需要帮助解决问题: 我有像这样的字典 除了做其他事情,我们还有其他方法可以获取三个价值吗? ? 问题答案: 您可以在每个字典上使用get()。确保已为每个访问添加了“无”检查。
问题内容: 我有类似的东西 并且需要具有: 非常感谢! 编辑:我想按subkey1进行排序,这之前还不清楚。 问题答案: 使用关键字表示功能和方法: 演示: 假定 所有 顶级词典都具有一个键,该键被假定为带有键的字典。 有关更多详细信息和技巧,请参见Python Sorting HOWTO 。
问题内容: 我有一个嵌套列表,如何将其转换为字典 字典应阅读以下内容 我试图将其更改为Pandas DataFrame并将其转换为字典。但是我正在寻找从列表到字典的直接转换 将感谢您的帮助。在Python 3中期待答案 问题答案: 一种方法是使用,它依次遍历每个列表的第 i 个元素: 按照@Jean-FrançoisFabre的建议,通过打开包,可确保您的值是列表。 结果 另一种方法是使用:
本文向大家介绍python实现字典嵌套列表取值,包括了python实现字典嵌套列表取值的使用技巧和注意事项,需要的朋友参考一下 如下所示: 访问dict的值: 访问dict下的result列表的值: 也可以使用临时变量: 以上这篇python实现字典嵌套列表取值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
问题内容: 我正在处理一个复杂的嵌套字典和列表数据结构。我需要将数据展平并将所有嵌套项都置于0级。有关更多说明,请参见以下示例: 我需要将其展平为: 我从这篇文章的第一个答案中获得了参考,但是只有在我嵌套了字典的情况下它才可以工作,如果列表嵌套在字典中并且更多的词典嵌套在这些列表中,则它不能工作。 我对代码做了一些修改以适合我的用例,但是此代码不起作用 当我在此处粘贴代码时,缩进变得混乱。但我真的