我有点被家庭作业问题困住了。 假设我有一个这样的列表:
[('Paul George', 1), ('Luke Skywalker', 2), ('Mitchell Piker', 3), ('Phil Dam', 1)]
我必须编写一个函数,使列表按第二个元素(即整数值)排序。另外,如果两个人有相同的整数,那么我必须按字母顺序排序。另外,我可以使用sort
,但不能使用可选参数key
。所以我应该有这样的东西:
[('Mitchell Piker', 3), ('Luke Skywalker', 2), ('Paul George', 1), ('Phil Dam', 1)]
>>> def sort(lst: List[Tuple[str, int]]):
"""Return the list of tuples from largest integer score to lowest
integer score. If two people have the same score, then sort them by
alphabetical order.
"""
lst2 = []
lst2.append(lst[0])
for i in range(len(lst)):
for j in range(len(lst2)):
if lst[i][-1] > lst2[j][-1] and lst[i][-1] not in lst2:
lst2.insert(0, lst2[i])
if lst[i][-1] < lst2[j][-1] and lst[i][-1] not in lst2:
lst2.append(lst2[i][-1])
return lst2
但是我得到一个错误。有人能帮忙吗?非常感谢
假设函数的签名只是在问题中被弄乱了(否则代码将引发
NameError
:问题在于这一行:
lst2
的长度为零-循环永远不会执行。。。你知道吗那怎么办?你知道吗
解释:
sorted
做你想做的,除了:它将首先根据第一个元素(名称)排序
然后根据第二个元素(数字)排序,但也按升序排序
所以要解决这个问题:将它与元素交换以及否定数字结合起来。你知道吗
如果可以假设数字总是整数,那么可以使用它们来索引值,就像这样(也可以通过sort而不是sorted来实现)
编辑:
注意:如果你反对使用
groups.keys()
,你可以用[x for x in groups]
来代替。。。你知道吗相关问题 更多 >
编程相关推荐