【问题标题】:Need help sorting arrays numerically需要帮助对数组进行数字排序
【发布时间】:2015-06-28 17:15:47
【问题描述】:

我有一个格式为 [number, name] 的数组,我正在尝试使用 sort() 函数将其从最大数字排序到最小数字。

我目前在数组上使用 sort() 然后反转结果,但是它似乎没有正确排序。

这是我正在使用的值:

['850.766666667', 'Chris'], ['332.466666667', 'Callum'], ['655.793939394', 'James'], ['84.9444444443', 'John']

这是我得到的结果:

[('850.766666667', 'Chris'), ('84.9444444443', 'John'), ('655.793939394', 'James'), ('332.466666667', 'Callum')]

您可能看到,('84.9444444443', 'John') 应该在最后,但它是排序后的第二个值。

我做错了什么?

【问题讨论】:

  • 请先在堆栈中搜索您的问题,然后如果没有找到您的 aks,请输入 ypur 问题。

标签: python arrays list python-2.7 sorting


【解决方案1】:

几乎是正确的@Zaaferani

l = ['850.766666667', 'Chris'], ['332.466666667', 'Callum'], ['655.793939394', 'James'], ['84.9444444443', 'John']
sorted(l, key=lambda k: float(k[0]), reverse=True)

如果你不想存储排序函数的输出

l=sorted(l, key=lambda k: float(k[0]), reverse=True)

【讨论】:

  • 这给了我与其他人的代码相同的结果:[('332.466666667', 'Callum'), ('84.9444444443', 'John'), ('850.766666667', 'Chris profile .txt'), ('655.793939394', 'James profile.txt')]
  • sorted 不会改变变量 l 的值,因此您需要将该函数给出的结果分配给一个新变量(或相同的变量)
  • 我还是不太明白。我已经得到它,所以'Comb = zip(Number,Name)'然后我将你的代码更改为'Comb'而不是'l'。这不正确还是我遗漏了什么?
  • 好的,终于搞定了,非常感谢!!
【解决方案2】:

使用此代码

l = ['850.766666667', 'Chris'], ['332.466666667', 'Callum'], ['655.793939394', 'James'], ['84.9444444443', 'John']
sorted(l, key=lambda k: float(k[0]), reverse=True)

【讨论】:

  • 使用这个我得到:[('332.466666667', 'Callum'), ('84.9444444443', 'John'), ('850.766666667', 'Chris profile.txt'), ( '655.793939394', 'James profile.txt')]
  • 在 python 2.6 上,我得到了预期值;在 2.7 [这就是它的标签],我得到了 Callum 得到的东西。
  • @Foon:我认为您尝试了不同版本的代码,这些代码已被修复以匹配 Tim Rijavec 的正确解决方案。 Python 2.6 和 2.7 都应该给出完全相同的结果,因为它们以相同的方式比较字符串。
  • @Zaaferani:这个答案(现已更正)与 Tim Rijavec 的相同:我认为它应该被删除,因为它不会带来任何东西(但对于那些检查它的人来说是浪费时间)。 :)
  • @EOL ,是的,我首先回答这个问题。 Tim Rijavec 说Almost correct @Zaaferani
猜你喜欢
  • 1970-01-01
  • 2014-06-29
  • 2021-11-08
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 2011-04-15
相关资源
最近更新 更多