<p>不需要使用<code>heapq</code>:</p>
<pre><code>def second_smallest(builtlist):
# sort on key.
temp = sorted(builtlist, key = lambda x: x[1])
second_smallest_group = []
current_val = 0
# iterate list comparing i with i + 1
for i in range(len(temp) - 1):
current_val = temp[i][1]
# if in set of first smallest ignore.
if current_val == temp[i+1][1] and len(second_smallest_group) == 0:
continue
# if in second set of smallest add.
elif current_val == temp[i+1][1] and len(second_smallest_group) > 0:
second_smallest_group.append(temp[i+1][0])
# if changing between sets add first member.
elif len(second_smallest_group) == 0:
second_smallest_group.append(temp[i+1][0])
# if we move to another group break.
else:
break
return second_smallest_group
builtlist = [["Rachel", -50], ["Mawer", -50], ["Sheen", -50],["Shaheen",51]]
print(second_smallest(builtlist))
builtlist = [["Shadab",8], ["Varun", 8.9], ["Sarvesh", 9.5], ["Harsh",10]]
print(second_smallest(builtlist))
</code></pre>