我想在这个数组中找到父级兄弟。
arr = {
'children': [
{
'id':'item_1',
'title':'Item 1',
'children': [
{
'id':'item_a',
'title':'Item A'
},
{
'id':'item_b',
'title':'Item B'
},
{
'id':'item_c',
'title':'Item C',
'children': [
{
'id':'item_i',
'title':'Item I'
},
{
'id':'item_ii',
'title':'Item II'
}
]
}
]
}
]
}
例如,如果我把" item_b"进入方法必须返回" item_1" (忽略"孩子"作为父母)。类似的东西:
>>> parent = get_parent(arr, 'item_i', ['children'])
>>> parent['id']
item_c
>>> parent = get_parent(arr, 'item_1', ['children'])
>>> parent['id']
None
我的身份是独一无二的,所以我知道只会有一位父母。
我已经通过mgilson和Claudiu查看了示例,但我无法理解如何将这些更改为我之后的内容。 Claudius解决方案看起来是正确的方向,但是对于我的数组,它只返回[]
。
修改 ewcz解决方案效果很好。我修改了一下以获得标题:
def get_parent(arr, item_id):
L = [(None, arr)]
while L:
parent_item, item = L.pop()
curr_id = item.get('id', None)
if curr_id == item_id:
return parent_item
children = item.get('children', [])
for child in children:
L.append((item, child))
parent = get_parent(arr, 'item_i')
print(parent.get('id'))
print(parent.get('title'))
答案 0 :(得分:1)
一个选项是遍历您的数组并在遍历到达感兴趣的项目时返回父ID:
{ 5x5x5 subaary no 0,5x5x5 subaary no 1,5x5x5 subaary no 2,5x5x5 subaary no 3,5x5x5 subaary no 4}