如何解决根据来自 dict 的给定依赖项,使用序列迭代列表
我有一个列表 lst
,我想使用函数 f
迭代转换列表中的每个元素:
lst = ['a','b','c','d','e','f','g']
def f(x):
# do something
return x
我可以在列表上迭代地应用这个转换:
new_lst = [f(x) for x in lst]
到目前为止一切顺利。现在我们要为 lst
中的处理元素引入排序。 dict ensure_transformed
描述了在处理给定元素之前需要转换的元素列表:
ensure_transformed = {'a' : ['b','e'],'b' : ['e','f'],'c' : ['a','d'],'d' : [],'e' : [],'f' : []
}
解释是——在变换a
之前,变换b
和e
,在变换b
之前,变换e
和f
等等
('d' : []
的意思是在 d
之前不需要处理任何元素。g
没有出现在 ensure_transformed
中,这意味着 g
不应该是变形。)
如何使用函数 lst
转换 f
,同时确保从 ensure_transformed
开始排序?
表上的选项:
我愿意接受其他方法。
解决方法
ensure_transformed
字典描述了一个有向图,其中 {'a': ['b','e']}
表示有一条边 b → a
和一条边 e → a
。
假设该图没有环,您的任务相当于对其应用topological sorting,为此您可以找到各种算法。
,正如@CristianCiupitu 在评论中提到的,现在通过使用 graphlib 模块可以很容易地在 Python 3.9 中做到这一点:
app.UseRouting();
app.UseCors(options => options.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
app.UseEndpoints(endpoints => .....
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。