今天也遇到了一点工作上的小问题,但是克服了这个困难之后,对list和set有了更深入的了解~
关于list和set的特性,可以看我过去的文章。 pyhon的数据类型
背景:
deep_sort_yolov3在检测行人时,不仅可以记录行人的坐标,还可以记录行人的临时ID。 请参照下图。
我必须做的工作是在所有的框架中捕捉行人的id,放在他的坐标信息后面,同时将所有的id放在一个列表中,但列表的id分别只出现一次。 例如:
[ 1,2,3,4,5,6,7,8,9,…,234]
最后生成的样式将成为红色框中的形状。
由于每个id只出现一次的特性,自然想到了通过set来实现。 首先,将所有帧的所有append到一个列表中,将这个列表变为set,其所有id只有一个~~,一切顺利。 但事情没那么简单。 一个老鼠屎坏了一锅汤的破事又发生了。 因为我遍历了这个set中的元素,所以一个个放逗号,最后一个多一个,还是用检查这个元素是否是最后添加的元素的方法来解决。 如果是这样,就不加逗号,否则就加逗号,表现得有点混乱。 直接看代码吧:
以下代码与上面的屏幕快照的最后一行的文本写入相对应~
input_tags_set=set(#track_id ) track_id是所有id都被保存的数组(存在重复id ) )
tmp='帧速率' : '1','输入标签' : '
写入(tmp )
len _ input _ tags=len (输入标签集) #获取数组长度
边缘(len _输入_标签) :
if i==len_input_tags-1:如果当前元素是最后一个元素,则只写入元素
TMP=str(input_tags_set[I] ) () ) ) ) ) ) ) ) ) )但) ) ) )到) ) ) ) )但) ) ) ) ) ) )但) ) )而言之
写入(tmp )
else:#如果当前元素不是最后一个元素,则使用逗号写入该元素
tmp=str (输入标签集),'
写入(tmp )
tmp=',' suggestiontype':'track ',' SCD ' :假,'可视帧' : [ ],'标记颜色' : [
写入(tmp )
大家看到上面的代码观察到什么问题了吗?
最初,我没有注意到set无法通过索引访问,即input_tags_set[i]这样的写法错误,但程序直接报告了错误:
由于list可以通过索引进行访问,我想干脆把set放回list,不就可以通过索引进行访问了吗? 哈哈我真机智~~~
这个代码变成了这样:
输入标签集=集(轨迹id ) #用于所有实体
将#list设为set,去除重复值,将set返回list,按索引进行访问
输入标签列表=列表(输入标签集)
tmp='帧速率' : '1','输入标签' : '
写入(tmp )
len _ input _ tags=len (输入标签列表)
边缘(len _输入_标签) :
ifi==len输入标签- 1:
tmp=str (输入标签列表)
写入(tmp )
else:
tmp=str (输入标签列表),'
写入(tmp )
tmp=',' suggestiontype':'track ',' SCD ' :假,'可视帧' : [ ],'标记颜色' : [
写入(tmp )
欢迎来到“pyhon修炼之道”。 继续更新新鲜的python相关文章~