gpt4 book ai didi

python - 在变量中保存对 python 字典(来自 json 文件)项的引用

转载 作者:行者123 更新时间:2023-12-04 07:45:39 24 4
gpt4 key购买 nike

我正在尝试将引用保存到无法保证项目订单的 json 文件中的值。到目前为止,我拥有这样一个数据集:

"Values": [
{
"Object": "DFC_Asset_05",
"Properties": [
{
"Property": "WeightKilograms",
"Value Offset": 5
},
{
"Property": "WeightPounds",
"Value Offset": 10
}
]
},
{
"Object": "DFC_Asset_05",
"Properties": [
{
"Property": "Name",
"Value Offset": 25
},
{
"Property": "ShortName",
"Value Offset": 119
}
]
}
]
并检索此对象:
{
"Property": "ShortName",
"Value Offset": 119
}
是这样的字符串:
reference = "[Object=DFC_Asset_06][Properties][Property=Name]"
这在字符串中看起来不错且易于理解,但是找到引用的值是非常不干净的,因为我必须首先使用正则表达式解析引用,然后在数据中循环以检索匹配项。
我做错了吗?有一个更好的方法吗?我看了 reduce()功能,但是它似乎是为带有静态数据的字典而设计的。例如,我无法保存直接键:
reference = "[1][Properties][1]"
reference_using_reduce = [1, "Properties", 1]
因为它们可能并不总是按这个顺序

最佳答案

您可以使用 pyjq 对 JSON 运行“查询”,而无需引用特定索引。模块:

query = (
'.Values[]' # On all the items in "Values"
'|select(."Object" == "DFC_Asset_06")' # Find key "Object" which holds this value
'|."Properties"[]' # And get all the items of "Properties"
'|select(."Property" == "Name")' # Where the key "Property" holds the value "Name"
)
pyjq.first(query, d)
结果:

{'Property': 'Name', 'Value Offset': 25}


您可以在 documentations 中阅读有关 jq 的更多信息。 .

关于python - 在变量中保存对 python 字典(来自 json 文件)项的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67205279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com