按tup中的某个元素对元组列表排序

2024-06-01 07:00:20 发布

您现在位置:Python中文网/ 问答频道 /正文

def insert(key, value, D, hasher = hash):

    x = hash(key)
    key_value = (x, key, value)
    D.append(key_value)
    sorted(D, key = lambda x:x[0])
    return D

insert("swag", 100, D, hash)

insert("swg", 150, D, hash)

print(D)

这似乎从来没有分类

我想通过x值对列表进行排序


Tags: lambdakey列表returnvaluedef分类hash
2条回答

您混淆了排序排序sorted是一个函数,它只保留原来的iterable,但返回已排序的项。你没有保存这个价值。试试这个:

return sorted(D, key = lambda x:x[0])

示例

^{pr2}$

输出:

[(-1840385907632881630, 'swag', 100)]
[(-1840385907632881630, 'swag', 100), (-369175422006790866, 'swg', 150)]
[(-1840385907632881630, 'swag', 100), (-369175422006790866, 'swg', 150), (5971043325587305850, 'loot', 200)]
[(-1840385907632881630, 'swag', 100), (-369175422006790866, 'swg', 150), (5971043325587305850, 'loot', 200), (5473401298224946764, 'crud', 50)]
[(-1840385907632881630, 'swag', 100), (-369175422006790866, 'swg', 150), (5473401298224946764, 'crud', 50), (5971043325587305850, 'loot', 200)]

您正在对列表进行排序,并立即将已排序的列表丢弃。注意,sorted返回一个新列表,因此您还需要将排序后的列表重新分配给名称D。在

...
return sorted(D, key=lambda x:x[0])

要进行适当排序,请使用列表的sort方法:D.sort

^{pr2}$

相关问题 更多 >