视频名称可能会出现多次。 例: L = [('abc',10),('def',15),('ghi',10),('abc',12),...,('xyz',100)] 该函数应返回['xyz','abc',...,'def','ghi']
这是我到目前为止所做的事情(无论我尝试什么都行不通,似乎无法修复):
def ranked_games(L):
sorted_list = [x for x in L.items()]
sorted_list.sort(key = lambda x:x[1]) #sort by value
sorted_list.reverse()
print("Sorted by Value Descending",sorted_list)
如果您有更好的方法来解决这个问题,或者您知道我的代码出了什么问题,我将不胜感激。请提前感谢您。
答案 0 :(得分:1)
这会完成您的目标吗?
QTcpSocket
答案 1 :(得分:1)
这是你要找的吗?
L = [('abc',10),('def',15),('ghi',10),('abc', 12),('xyz',100)]
def ranked_games(L):
sorted_list = sorted(L,key = lambda x:x[1],reverse=True) #sort by value
print("Sorted by Value Descending",[i[0] for i in sorted_list])
ranked_games(L)
答案 2 :(得分:1)
要修复上述代码,您只需尝试以下操作:
def ranked_games(L):
L.sort(key = lambda x:x[1], reverse=True) #sort by value
print("Sorted by Value Descending", [i for i, _ in L[:10]]) # [:10] for slicing 10 sorted values
# calling the function
my_list = [('abc',10),('def',15),('ghi',10),('abc', 12),('xyz',100)]
ranked_games(my_list)
print('Original List: ', my_list)
结果:
Sorted by Value Descending ['xyz', 'def', 'abc', 'abc', 'ghi']
Original List: [('xyz', 100), ('def', 15), ('abc', 12), ('abc', 10), ('ghi', 10)]
请注意,原始列表也会在调用list .sort
方法后进行排序。如果您不希望对原始列表进行排序,那么您可能需要调用sorted
函数并将列表作为参数传递,如下所示:
def ranked_games(L):
sorted_list = sorted(L, key = lambda x:x[1], reverse=True) #sort by value
print("Sorted by Value Descending",[i for i, _ in sorted_list[:10]]) # [:10] for slicing 10 sorted values
# calling the function
my_list = [('abc',10),('def',15),('ghi',10),('abc', 12),('xyz',100)]
ranked_games(my_list)
print('Original List: ', my_list)
结果:
Sorted by Value Descending ['xyz', 'def', 'abc', 'abc', 'ghi']
Original List: [('abc', 10), ('def', 15), ('ghi', 10), ('abc', 12), ('xyz', 100)]
有关sort
和sorted
之间差异的更多信息,请查看相关问题What is the difference between sorted(list)
vs list.sort()
?。
答案 3 :(得分:1)
我认为您缺少合并部分。必须先将'abc'组合起来,然后才能进行排序,否则,您实际上并不是在对正确的列表进行排序:
l = [('abc', 10), ('def', 15), ('ghi', 10), ('abc', 12), ('xyz', 100)]
diction = {}
for (i, j) in l:
if i in diction:
diction[i] = diction[i] + j
else:
diction[i] = j
sorted_list = list(diction.items())
sorted_list = sorted(sorted_list, key=lambda x: x[1], reverse=True)
print(sorted_list[:10])
答案 4 :(得分:0)
l=[('abc',10),('def',15),('ghi',10),('abc', 12),('xyz',100)]
sortedlist = sorted(l,key = lambda x:x[1],reverse=True)
d=dict(sortedlist)
print(list(d.keys()))