【发布时间】:2009-12-11 15:43:29
【问题描述】:
我目前正在用 Python 编写一个程序来跟踪视频游戏的统计信息。我用来跟踪分数的字典示例:
ten = 1
sec = 9
fir = 10
thi5 = 6
sec5 = 8
games = {
'adom': [ten+fir+sec+sec5, "Ancient Domain of Mysteries"],
'nethack': [fir+fir+fir+sec+thi5, "Nethack"]
}
现在,我正在努力解决这个问题,并列出一长串嵌套的 if,但我认为这不是解决问题的正确方法。我试图找出一种通过数组对字典进行排序的方法,然后找到一种方法来显示弹出的前十个...而不是深入研究 if 语句。
所以...基本上,我的问题是:你有什么想法可以用来让这更容易,而不是更难吗?
===== 编辑 ====
十+冷杉产生数字。我想找到一种方法来对列表进行排序(我缺乏正确术语的知识)以按数字排序(基本上,数组第一部分中数字最大的排序优先。
这是我目前的做法的一个例子(尽管它不完整,因为它非常令人厌烦:Example Nests (paste2)(让我们试试这个?)
==== 第二次编辑 ====
如果有人没有在下面看到我的评论:
十、冷杉等 - 这些只是分数的变量。基本上,它从前十名列表变为可变数字。 十 = 1,宁 = 2,冷杉 = 10,冷杉 = 10,秒 5 = 8,秒 = 9... 所以 : 'adom': [ten+fir+sec+sec5, "Ancient Domain of Mysteries"] 实际上注册为 : 'adom': [1+10+9+8, "神秘的古代领域”],最终看起来像:
'adom':[28,“神秘的古代领域”]
所以,基本上,如果我最终在我的示例中完成了“前两个”,那就是:
((1)) 网络黑客 (48)
((2)) ADOM (28)
我会写一个实际的数字,但我正在考虑改变一些东西,所以数字可能会有点不同,我不想重写它。
== 第三次(希望是最后一次)编辑 ==
修复了我原来的代码示例。
【问题讨论】:
-
“数组”?你的意思是“列表”吗?请更新问题。
-
我不确定 10+fir+sec+sec5 与示例代码中的变量名称有何关系,但您可能会很高兴知道:如果您只调用
sort(array)array的所有元素本身都是列表或元组,sort 将首先按列表/元组的第一个元素自动排序,然后按第二个,依此类推。 -
更新您的示例以显示实际结构。
ten+fir是一个数字还是一个数字列表?你也不需要 \ 因为你的声明有{}s。 -
@Dexodro:不要在自己的问题上写 cmets。你拥有这个问题。您可以更新问题以使其清晰且对其他人有用。请删除您的问题所针对的 cmets。
标签: python arrays dictionary sorting logic