首页 / PYTHON / python – 如何安排字典?
python – 如何安排字典?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 如何安排字典?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1787字,纯文字阅读大概需要3分钟。
内容图文
![python – 如何安排字典?](/upload/InfoBanner/zyjiaocheng/810/eaae32abc1094eb1872ec7e2db698df7.jpg)
我很难按照以下方式安排字典,输入中的给定数字为5,然后在字典中搜索key = 5将其放在第一个然后是第一个值4并搜索key = 4 in字典并将其值设为秒,然后将第二个值设为5,即3,并在字典中搜索key = 3并将其值设为第三
值将是一个或两个整数
我正在绘制一个二叉树,所以如果这里的5个根节点(父节点)是第一个,然后它的子节点,子节点等下一个将更容易
我试图使用OrderedDict安排它,但我无法找到它
有谁可以帮助我吗?
输入:
{8: [9], 3: [6, 8], 4: [2, 1], 5: [4, 3], 6: [0, 7]}
输出:
{5: [4, 3], 4: [2, 1], 3: [6, 8], 6: [0, 7], 8: [9]}
更新的代码:
def dfs(cur, prev, edges, res):
for next in edges[cur]:
if next == prev: continue
res.setdefault(cur, []).append(next)
dfs(next, cur, edges, res)
def construct_tree(edges, root):
d = {}
x = []
for edge in edges:
u, v = edge
d.setdefault(u, []).append(v)
d.setdefault(v, []).append(u)
res = {}
dfs(root, -1, d, res)
return res
if __name__ == '__main__':
root_node = 5
edges = [[2, 4], [4, 1], [0, 6], [7, 6], [8, 9], [4, 5], [6, 3], [3, 5], [3, 8]]
print((construct_tree(edges, root_node)))
解决方法:
这是一个有趣的问题,因为它比你想象的要复杂得多.这会深入探索路径,因此深度优先和广度优先搜索等内容非常重要.
从你的样本输入/输出看起来你想要一个广度优先的搜索,所以我们需要一个队列来解决问题.当然,您还需要一个OrderedDict来放置您找到并填充它们的节点以及您的示例数据.
from collections import OrderedDict
from queue import Queue
sample_dict = {8: [9], 3: [6, 8], 4: [2, 1], 5: [4, 3], 6: [0, 7]}
你从某个地方获得了第一个节点,所以只需要调用该函数的一个参数,然后抓取该键值中的每个项目,然后将其添加到队列中,然后推送队列直到完成!
def sort_the_dict(in_, firstkey):
# in_ is your sample data.
result_dict = OrderedDict()
q = Queue()
q.put_nowait(firstkey)
while not q.empty():
k = q.get_nowait():
v = in_.get(k)
if v is not None:
# if a value exists for that key
result_dict[k] = v
for vv in v:
q.put_nowait(vv)
return result_dict
内容总结
以上是互联网集市为您收集整理的python – 如何安排字典?全部内容,希望文章能够帮你解决python – 如何安排字典?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。