【问题标题】:sort list Python [duplicate]排序列表Python [重复]
【发布时间】:2019-11-29 15:32:10
【问题描述】:

我必须对这个 python 列表进行排序:

55.115783, 62.380159, 68.738354, 66.014074, 72.073756, 69.036055, 71.594129, 77.551457, 75.922748, 81.613726, 89.083050, 94.257211, 96.328673 ,102.489464, 111.449678, 118.870730

如果我尝试使用 list.sort() 我会得到这个:

102.489464, 111.449678, 118.870730, 55.115783, 62.380159, 66.014074, 68.738354, 69.036055, 71.594129, 72.073756, 75.922748, 77.551457, 81.613726, 89.083050, 94.257211, 96.328673

我真的不知道为什么!!有人可以帮帮我吗!

【问题讨论】:

  • 如果您向我们提供您正在使用的实际“列表”会有所帮助,但是我已经看到了这个问题。你有一个字符串列表!它们是按词汇排序的。排序前转换为浮点数列表

标签: python list


【解决方案1】:

您的值被排序为字符串 - 1025 将根据字符串中的第一个 1 排序(因此将在 5 前面排序) - 而不是数值.

解决此问题的最简单方法是在对sorted 的调用中使用float 函数和key

>>> a = ['123', '6']
>>> sorted(a)
['123', '6']
>>> sorted(a, key=float)
['6', '123']

key 参数采用一个函数,该函数将在确定排序值之前应用于每个条目,这将为您提供一个用于排序的数值。

【讨论】:

  • 如果所需的输出是字符串列表,则为 true。如果所需的输出是浮点数列表,则可能的解决方案是sorted(map(float, a))
  • 是的。我建议在排序之前应用它,以便更清楚地了解这种情况下的意图,因为它会明确声明“我们要将此列表转换为浮动列表”。但是,这将要求用户意识到转换为浮点数可能存在的缺点 - 例如可能无法获得与原始字符串表示的相同的表示形式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 2015-11-14
  • 2015-09-16
相关资源
最近更新 更多