Python 递归调用仅用于内部_dep中的键值,或跳过跳过列表中的键值
我有以下递归调用internal_dep中每个值的代码,有没有一种方法可以将函数调用更改为只调用internal_dep中的键,或者跳过对skip list中键的调用Python 递归调用仅用于内部_dep中的键值,或跳过跳过列表中的键值,python,Python,我有以下递归调用internal_dep中每个值的代码,有没有一种方法可以将函数调用更改为只调用internal_dep中的键,或者跳过对skip list中键的调用 internal_dep = {'313115': ['313113'], '313117': ['313115'], '313137': ['313136'], '313136': ['313119'], '313119': ['313118'], '313118': ['313117']} mainlist = ['31313
internal_dep = {'313115': ['313113'], '313117': ['313115'], '313137': ['313136'], '313136': ['313119'], '313119': ['313118'], '313118': ['313117']}
mainlist = ['313137', '317152' , '314449']
skip = ['313113']
def _getdep(item):
local_list, temp_list = [], []
temp_list.extend(internal_dep[item])
local_list.extend(temp_list)
for new_item in temp_list:
local_list.extend(_getdep(new_item))
return local_list
build_dep_list = []
for item in mainlist:
build_dep_list.append(item)
build_dep_list.extend(_getdep(item))
print build_dep_list
错误:-
Traceback (most recent call last):
File "test.py", line 16, in <module>
build_dep_list.extend(_getdep(item))
File "test.py", line 10, in _getdep
local_list.extend(_getdep(new_item))
File "test.py", line 10, in _getdep
local_list.extend(_getdep(new_item))
File "test.py", line 10, in _getdep
local_list.extend(_getdep(new_item))
File "test.py", line 10, in _getdep
local_list.extend(_getdep(new_item))
File "test.py", line 10, in _getdep
local_list.extend(_getdep(new_item))
File "test.py", line 10, in _getdep
local_list.extend(_getdep(new_item))
File "test.py", line 6, in _getdep
temp_list.extend(internal_dep[item])
KeyError: '313113'
EXPECTED OUTPUT:-
['313115', '313113', '313117','313137','313136','313119','313118','313117']
回溯(最近一次呼叫最后一次):
文件“test.py”,第16行,在
构建dep列表。扩展(_getdep(项))
文件“test.py”,第10行,在_getdep中
本地列表。扩展(_getdep(新项目))
文件“test.py”,第10行,在_getdep中
本地列表。扩展(_getdep(新项目))
文件“test.py”,第10行,在_getdep中
本地列表。扩展(_getdep(新项目))
文件“test.py”,第10行,在_getdep中
本地列表。扩展(_getdep(新项目))
文件“test.py”,第10行,在_getdep中
本地列表。扩展(_getdep(新项目))
文件“test.py”,第10行,在_getdep中
本地列表。扩展(_getdep(新项目))
文件“test.py”,第6行,在_getdep中
临时列表扩展(内部部门[项目])
键错误:“313113”
预期产出:-
['313115', '313113', '313117','313137','313136','313119','313118','313117']
我会将_getdep函数修改为如下内容:
def _getdep(item):
final_dep = []
dep = internal_dep.get(item, [])
final_dep.extend(internal_dep.get(item, []))
for i in [d for d in dep if d not in skip]:
final_dep.extend(_getdep(i))
return final_dep
有关internal_dep.get(item,[])的使用,请参见:(它返回internal_dep[item]的值,或者如果没有这样的键,则返回空列表)输出:
['313137', '313136', '313119', '313118', '313117', '313115', '313113', '317152', '314449']
你的意思是只调用
mainlist
中的键,并跳过skip
list中的键?@AshwiniChaudhary-是的,调用mainlist中的键及其依赖项,只调用internal\u dep中提到的键查看我编辑的解决方案。-感谢您的输入。。但我的输出是正确的,在您的输出“313113”中缺少…仍需要打印…谢谢,我修改了它。在您的问题中,您使用build\u dep\u list.append(item)
。然后“317152”和“314449”必须在输出中。您在该部分是正确的,但您的输出缺少“313113”不再,我已对其进行了修改(这是末尾的第三个条目)这与您提供的原始条目有何不同..我为原始条目创建了一个粘贴链接…两者都提供相同的输出/