python如何竖着输出_python大佬教教我怎么讲输出的竖直排列的字典,转换成一排列表嵌入字典的格式...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

假设你已经做完了所有的dict,放到了list3里面。其中有一些dict id是相同的,你想把id相同的dict合并,hostname做成列表(或者集合)。一个最朴素的思路就是对这个list进行遍历,然后把我上面说的话翻译成程序。每拿到一个dict,就和前面所有的dict进行比较,如果ID相同,那么判断hostname,如果hostname不同,则放进hostname列表,如果是set就不需要比较。注意,这个dict被合并到前面去了,所以没有用了,我们要删除他。但是注意list在遍历过程中不能直接删元素,所以我们把这个dict放到一个新的list_remove里面,遍历完list3之后,再把list3中在list_remove里面的元素都删了。但是还有一个问题,我们需要标记一下这个dict,它被合并过,在后面的遍历中跳过它,给它一个key , dict['merged'] = True。在后面遍历的时候,如果dict有这个key,则跳过。但是这个算法时间复杂度太高了。假设list3有N个元素,在遍历第N个dict的时候,需要N-1次比较,因此是N平方的复杂度。

因此如果能够不用N-1次比较的话,效率就高了。而能够直接找到元素的数据结构就是dict。所以我们重新设计算法:

我们新建一个dict,取名di_merged,这个dict的key就是那些id:"001”, “002”。。。“011”等等。值就是一个dict,这个dict就是你要的newdict{'ID':'001','hostname':{'010','011'}}

这个程序就简单多了,只要遍历一遍list3。对每一个dict,检查他的id是否在di_merged里面,如果在里面,则通过这个id找到value,即newdict,把hostname合并即可。如果不存在,则在di_merged里面添加这个dict就行了。一次遍历,解决问题。

我写了这么多,就是教你思路,教你思考的方法。具体到代码就很容易了,你自己写吧。“关键是把问题描述清楚,用标准的语言把问题描述清楚”,可以自言自语,告诉自己,我的输入是什么,我的输出是什么,我的输入通过哪些行为一步步变成输出的。然后把每一个行为翻译成程序就可以了。先把最差的程序,能运行的程序写出来。然后再优化程序,提高算法效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值