排序字典列表不能正确使用双精度

时间:2019-02-27 13:13:46

标签: python python-3.x

我有一个这样的词典列表:

MID(A2,IFERROR(FIND("! ",A2,FIND("! ",A2,1)+1)+2,FIND("! ",A2,1)+2),LEN(A2)-(FIND(" @",A2,1)+2))

我这样排序:

<class 'list'>: [{'shop': 'Eneba', 'price': '47.09'}, {'shop': 'HRKGAME', 'price': '47.99'}, {'shop': 'G2PLAY', 'price': '48.92'}, {'shop': 'Gamebillet', 'price': '49.29'}, {'shop': 'Instant Gaming', 'price': '49.34'}, {'shop': 'G2PLAY', 'price': '49.49'}, {'shop': 'GamingDragons', 'price': '49.57'}, {'shop': 'GAMIVO', 'price': '49.72'}, {'shop': 'GAMIVO', 'price': '50.05'}, {'shop': 'Cdkeys.com', 'price': '50.09'}, {'shop': 'G2PLAY', 'price': '50.38'}, {'shop': 'Kinguin', 'price': '50.48'}, {'shop': 'GAMIVO', 'price': '50.83'}, {'shop': 'Kinguin', 'price': '51.07'}, {'shop': 'IGVault', 'price': '51.26'}, {'shop': 'Mmoga', 'price': '51.45'}, {'shop': 'GreenmanGaming', 'price': '51.59'}, {'shop': 'Kinguin', 'price': '51.99'}, {'shop': '2Game', 'price': '53.99'}, {'shop': 'DLGamer', 'price': '55.19'}, {'shop': 'G2A.COM', 'price': '56.79'}, {'shop': 'G2A.COM', 'price': '57.26'}, {'shop': 'GamesRocket', 'price': '57.60'}, {'shop': 'G2PLAY', 'price': '58.80'}, {'shop': 'GamersGate', 'price': '59.99'}, {'shop': 'Kinguin', 'price': '60.67'}, {'shop': 'Gamesdeal', 'price': '65.24'}, {'shop': 'Gamebillet', 'price': '74.68'}, {'shop': 'Cdkeys.com', 'price': '76.49'}, {'shop': 'Instant Gaming', 'price': '76.74'}, {'shop': 'GreenmanGaming', 'price': '77.39'}, {'shop': 'G2PLAY', 'price': '77.70'}, {'shop': 'Kinguin', 'price': '80.18'}, {'shop': '2Game', 'price': '80.99'}, {'shop': 'Mmoga', 'price': '82.32'}, {'shop': 'DLGamer', 'price': '82.79'}, {'shop': 'GAMIVO', 'price': '82.87'}, {'shop': 'Gamebillet', 'price': '82.98'}, {'shop': 'Instant Gaming', 'price': '83.01'}, {'shop': 'HRKGAME', 'price': '83.49'}, {'shop': 'G2A.COM', 'price': '84.24'}, {'shop': 'Cdkeys.com', 'price': '84.49'}, {'shop': 'G2PLAY', 'price': '85.15'}, {'shop': 'G2A.COM', 'price': '85.92'}, {'shop': 'GreenmanGaming', 'price': '85.99'}, {'shop': 'GamesRocket', 'price': '86.02'}, {'shop': 'G2A.COM', 'price': '86.51'}, {'shop': 'Kinguin', 'price': '87.87'}, {'shop': 'GAMIVO', 'price': '88.40'}, {'shop': 'GamersGate', 'price': '89.99'}, {'shop': '2Game', 'price': '89.99'}, {'shop': 'G2PLAY', 'price': '90.48'}, {'shop': 'G2PLAY', 'price': '91.54'}, {'shop': 'DLGamer', 'price': '91.99'}, {'shop': 'HRKGAME', 'price': '92.52'}, {'shop': 'Kinguin', 'price': '93.36'}, {'shop': 'Kinguin', 'price': '94.46'}, {'shop': 'GamesRocket', 'price': '94.68'}, {'shop': 'Gamesdeal', 'price': '97.87'}, {'shop': 'GamersGate', 'price': '99.99'}, {'shop': 'G2PLAY', 'price': '100.59'}, {'shop': 'Kinguin', 'price': '103.80'}, {'shop': 'G2A.COM', 'price': '105.86'}, {'shop': 'Gamesdeal', 'price': '108.75'}, {'shop': 'Play', 'price': '42.93'}, {'shop': 'GamingDragons', 'price': '66.45'}, {'shop': 'GameStop', 'price': '89.99'}, {'shop': 'GameStop', 'price': '259.99'}, {'shop': 'PSNGAMES', 'price': '44.46'}, {'shop': 'Play', 'price': '45.12'}, {'shop': 'G2A.COM', 'price': '53.49'}, {'shop': 'Press', 'price': '59.21'}, {'shop': 'Instant Gaming', 'price': '59.21'}, {'shop': 'GAMIVO', 'price': '60.77'}, {'shop': 'Mmoga', 'price': '62.88'}, {'shop': 'Cdkeys.com', 'price': '63.99'}, {'shop': 'GamingDragons', 'price': '66.45'}, {'shop': 'GAMIVO', 'price': '82.87'}, {'shop': 'Cdkeys.com', 'price': '84.49'}, {'shop': 'Instant Gaming', 'price': '87.07'}, {'shop': 'Press', 'price': '87.07'}, {'shop': 'GameStop', 'price': '89.99'}, {'shop': 'Mmoga', 'price': '91.47'}, {'shop': 'GAMIVO', 'price': '93.93'}, {'shop': 'Cdkeys.com', 'price': '104.29'}, {'shop': 'GameStop', 'price': '259.99'}]

由于某种原因,我的列表最终如下所示:

sortedlist = sorted(shop_price_array, key=lambda k: k['price'])

所有5位数字( *。)都放在前面,然后对所有数字进行正确排序。 我用只有4位数字的列表进行了尝试,一切正常。
不知道为什么会这样。

1 个答案:

答案 0 :(得分:2)

字符串按字母顺序排序。因此,“ 100.59”位于“ 99”之前。

使用

key=lambda k: float(k['price'])