我试图根据名称前面的最大数值(降序)对给定输入进行排序。例如:
3 <-- Number of test case
shank 3
shashank 3
friend 5
使用c.sort(reverse = True)
时的代码:
a = int(raw_input())
c = []
for _ in xrange(a):
a,b = raw_input().split()
b = int(b)
c.append((b,a))
c.sort(reverse = True)
print c
[(5, 'friend'), (3, 'shashank'), (3, 'shank')]
这绝对没问题。
现在对于不同的方法我尝试使整数(b代码)为负,因此更多的负整数将首先表示它将作为反向运行。在输出中,数字的排列很好,但字符串与先前的输出不匹配。
代码:
a = int(raw_input())
c = []
for _ in xrange(a):
a,b = raw_input().split()
b = int(b)
c.append((-b,a))
c.sort()
print c
[(-5, 'friend'), (-3, 'shank'), (-3, 'shashank')]
与先前的不同之处在于shank先来,然后shashank来了。
那么这背后真的发生了什么?为什么它会提供不同的输出?
答案 0 :(得分:3)
使用c.append((-b,a))
,您倒置了b
但不是a
,因此当两个项目具有相同的b
时,它们会按升序a
排序。