如何在heapq中存储和排序字典?

时间:2019-06-22 14:09:15

标签: python heapq

我在将字典存储在heapq中时出现以下情况。有谁知道如何解决这个问题? 'dict'和'dict'实例之间不支持'<'

import heapq
PQ = []
heapq.heappush(PQ, {"1": "animal"})
heapq.heappush(PQ, {"2": "vechile"})
heapq.heappush(PQ, {"3": "music"})
print(PQ)
  

heapq.heappush(PQ,{“ 2”:“ vechile”})

     

TypeError:“ dict”和“ dict”的实例之间不支持“ <”

1 个答案:

答案 0 :(得分:0)

以下是一些选择:

  • 将字典包装在定义实例顺序的类实例中
  • 将您的词典转换为已经具有订单的类型

问题是{"1": "animal"} < {"2": "vechile"}是什么意思?

键实际上是优先级和值数据吗?在这种情况下,它们不应该是元组或命名元组或可排序对象。 ("1", "animal") < ("2", "vechile")具有含义,尽管十进制字符串的顺序与其数字值的顺序不同。这是"10" < "2"2 < 10的问题。