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值
对列表进行排序答案 0 :(得分:4)
您正在对列表进行排序,并立即抛出已排序的列表。请注意,sorted
会返回一个新列表,因此您还需要将已排序的列表重新分配到名称D
。
...
return sorted(D, key=lambda x:x[0])
要就地排序,请使用列表中的排序方法:D.sort
def insert(key, value, D, hasher = hash):
...
D.sort(key=lambda x:x[0])
答案 1 :(得分:1)
您混淆了排序和排序。 排序是一个单独保留原始可迭代的函数,但返回已排序的项目。你没有保存那个值。试试这个:
return sorted(D, key = lambda x:x[0])
示例强>
def insert(key, value, D, hasher = hash):
x = hash(key)
key_value = (x, key, value)
D.append(key_value)
print D
D.sort()
return D
D = []
insert("swag", 100, D, hash)
insert("swg", 150, D, hash)
insert("loot", 200, D, hash)
insert("crud", 50, D, hash)
print(D)
输出:
[(-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)]