给定一个uuid,我希望找到并返回包含uuid及其关联数据的dict。我写了一个测试来描述预期的结果。
def test_search_for_cat():
cat_id = "a2c23d62-9d06-44f4-92dc-b28875173a54"
cat_data = {
"senior-developer": {
"name": "senior-developer",
"displayName": "Senior Developer",
"uuid": "418714f8-b3bd-4ba5-b4a7-4f87717419f4",
"mid-level-developer": {
"name": "mid-level-developer",
"displayName": "Mid-level Developer",
"uuid": "a2c23d62-9d06-44f4-92dc-b28875173a54",
},
}
}
retreived_cat = search_for_cat(cat_id, cat_data)
assert retreived_cat == {
"name": "mid-level-developer",
"displayName": "Mid-level Developer",
"uuid": "a2c23d62-9d06-44f4-92dc-b28875173a54",
}我已经开始编写一个函数来搜索正确的类别。
def search_for_cat(cat_id, cat_data):
if isinstance(cat_data, dict):
for slug, data in cat_data.items():
if data["uuid"] == cat_id:
return data但我在为递归部分而挣扎。当uuid与给定的cat_id不匹配时,如何找到带有dict的键以传递给递归函数?

发布于 2020-02-05 20:07:17
你可以试试这个。如果对象是dict,isinstance(object,dict)返回True。我们必须找到将cat_id作为映射到键的值的字典。首先,检查给定的字典是否使用cat_id作为值,是否使用dict.values()。如果不是,则迭代值,如果值是字典,则再次重复上述过程。如果cat_id在其中,那么返回我们正在迭代的当前字典。
In [90]: cat_data
Out[90]:
{'senior-developer': {'name': 'senior-developer',
'displayName': 'Senior Developer',
'uuid': '418714f8-b3bd-4ba5-b4a7-4f87717419f4',
'mid-level-developer': {'name': 'mid-level-developer',
'displayName': 'Mid-level Developer',
'uuid': 'a2c23d62-9d06-44f4-92dc-b28875173a54'}}}
In [91]: cat_id = "a2c23d62-9d06-44f4-92dc-b28875173a54"
In [94]: def recur(_dict,val):
...: if val in _dict.values():
...: return _dict
...: else:
...: for v in _dict.values():
...: if isinstance(v,dict):
...: return recur(v,val)
In [95]: recur(cat_data,cat_id)
Out[95]:
{'name': 'mid-level-developer',
'displayName': 'Mid-level Developer',
'uuid': 'a2c23d62-9d06-44f4-92dc-b28875173a54'}
In [96]: retrived_cat=recur(cat_data,cat_id)
In [97]: retrived_cat
Out[97]:
{'name': 'mid-level-developer',
'displayName': 'Mid-level Developer',
'uuid': 'a2c23d62-9d06-44f4-92dc-b28875173a54'}发布于 2020-02-05 20:10:59
isinstance(myObject,dict)。
例如:
isinstance({},dict)返回true
isinstance([],dict)返回假
发布于 2020-02-05 20:10:10
if is_instance(slug, _dict):
search_for_cat_id(cat_id, _dict[slug])只需在返回语句下面添加以下内容
https://stackoverflow.com/questions/60083143
复制相似问题