我有一个字典,其中条目值可以通过键引用另一个条目,最终以没有当前值的条目或遇到“-”结尾。这个数据结构的目标是找到每个条目的父项,并将“-”转换为无。例如采取:
d = {'1': '-', '0': '6', '3': '1', '2': '3', '4': '5', '6': '9'}
- '1' 是映射到 '-' 的根,因此它应该导致None。
- '0' 的父级是 '6',它的父级是 '9',所以它应该是 '9'。
- '3' 有一个 '1' 的父级,它映射到 '-' 所以它应该导致None。
- '2' 有一个 '3' 的父级,它有一个 '1' 的父级映射到 '-' 所以它应该导致None。
- '4' 应保留在 '5' 的父级
- '6' 应保留在 '9' 的父级
我的详细解决方案如下:
d = {'1': '-', '0': '6', '3': '1', '2': '3', '4': '5', '6': '9'}
print(d)
for dis, rep in d.items():
if rep == "-":
d[dis] = None
continue
while rep in d:
rep = d[rep]
if rep == "-":
d[dis] = None
break
else:
d[dis] = rep
print(d)
输出是:
{'1': '-', '0': '6', '3': '1', '2': '3', '4': '5', '6': '9'}
{'1': None, '0': '9', '3': None, '2': None, '4': '5', '6': '9'}
结果是正确的。“1”元素没有父元素,“2”/“3”元素指向“1”。他们也应该没有父母。
是否有使用 Python 3+ 的更简洁的 Python 方式来完成此任务?