我在一个嵌套的列表字典(系统信息)上循环,并以以下格式存储到键的完整路径:
.children[0].children[9].children[0].children[0].handle = PCI:0000:01:00.0
.children[0].children[9].children[0].children[0].description = Non-Volatile memory controller
.children[0].children[9].children[0].children[0].product = Samsung Electronics Co Ltd
.children[0].children[9].product = Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2
.children[2].product = PWS-406P-1R
接下来,读取完整的路径,并将其与系统信息(数据)进行比较。如何将完整路径转换为这种格式?你知道吗
Data['children'][0]['children'][9]['children'][0]['children'][0]['handle']
Data['children'][0]['children'][9]['product]'
Data['children'][2]['product']
我可以这样做:
data = re.findall(r"\.([a-z]+)\[(\d+)\]", key, re.IGNORECASE)
[('children', '0'), ('children', '9'), ('children', '0'), ('children', '0')]
[('children', '0'), ('children', '9'), ('children', '0'), ('children', '0')]
[('children', '0'), ('children', '9'), ('children', '0'), ('children', '0')]
[('children', '0'), ('children', '9')]
[('children', '2')]
如何将这些元组列表之一转换为:
if Data['children'][2]['product'] == expected:
print('pass')
可以使用
itertools
、functools
和operator
库将索引链接在一起,并递归地查找它们以获得最终值。你知道吗首先,我认为应该更改regex以获取最后一个getter(即
handle, description, product
)应该给你这个
然后你可以这样做来连锁查找
它可以与
Data
结构中的递归搜索一起工作:第一次分割将键与数据分开(寻找
=
)l = l[1:]
删除第一个“.”第二个拆分将所有字段分隔为一个键列表,以访问数据。你知道吗
然后,在数据结构中有一个查找循环。你知道吗
我现在能想到的最简单的是:
代码:
输出:
注意^{} 的用法需要python3.6+。如果你愿意,你可以把它改成^{} 。你知道吗
相关问题 更多 >
编程相关推荐