当前位置:   article > 正文

Python对结构体/类进行排序(根据机构体中的某个数据)_python构建结构体类按照某一字段排序的方法

python构建结构体类按照某一字段排序的方法

我有一个list容器,其中存放的是结构体数据,数据格式如下

  1. class TestID:
  2. def __int__(self):
  3. self.id = -1
  4. self.similary = 0.0

排序的格式:相似度从大到小,ID号从大到小

意思是:当相似度相同时,ID号再进行排序

那么,我的初始化数据如下所示,仅做参考样本数据

  1. arr_list = []
  2. st = TestID()
  3. st.id = 10
  4. st.similary = 0.88
  5. arr_list.append(st)
  6. st = TestID()
  7. st.id = 8
  8. st.similary = 0.78
  9. arr_list.append(st)
  10. st = TestID()
  11. st.id = 9
  12. st.similary = 0.88
  13. arr_list.append(st)
  14. st = TestID()
  15. st.id = 1
  16. st.similary = 0.5
  17. arr_list.append(st)
  18. st = TestID()
  19. st.id = 2
  20. st.similary = 1
  21. arr_list.append(st)

我列举的结构体中有两个相似度相同(0.88),ID不同的数据

排序方法:

  1. def __sortTestSTGroup(self , testST ):
  2. length = len(testST )
  3. for i in range(1, length):
  4. x = testST [i]
  5. x_similary = testST [i].similarity
  6. x_id = testST [i].id
  7. for j in range(i, -1, -1):
  8. # j为当前位置,试探j-1位置
  9. temp_id = testST [j - 1].id
  10. temp_similary = testST [j - 1].similarity
  11. if x_similary == temp_similary:
  12. if x_id < temp_id:
  13. testST [j] = testST [j - 1]
  14. else:
  15. break
  16. elif x_similary > temp_similary:
  17. testST [j] = testST [j - 1]
  18. else:
  19. # 位置确定为j
  20. break
  21. testST [j] = x
  22. # for item in testST :
  23. # str_los = '改变后的内容:id=%s,similarity=%f' % (x.id, x.similarity)
  24. # print(str_los)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/177678
推荐阅读
相关标签
  

闽ICP备14008679号