python:我想对一个列表进行排序,它位于di中

2024-04-23 17:59:37 发布

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

在下面的代码中,test1起作用,test2不起作用。你知道吗

我觉得副本没有复制到它应该复制的地方。 这是命名空间问题吗?你能告诉我发生了什么,或者更好的是,如何使测试2工作(数组中的项必须是排序的,这样我就可以生成一个通用函数)吗?你知道吗

import copy


## test 1

items = {"gi":[{"urc":2}, {"urc":1}]}

must_be_sorted = [{"l":"gi", "key":"urc"}]

for ls in must_be_sorted:
    items[ls["l"]] = sorted(items[ls["l"]], key=lambda k: k[ls["key"]])

for u in items[must_be_sorted[0]["l"]]:
  print "a:", u["urc"],    
print

for u in items["gi"]:
  print "b:", u["urc"],
print

## test 2

items = {"gi":[{"urc":2}, {"urc":1}]}

must_be_sorted = [{"l":items["gi"], "key":"urc"}]

for ls in must_be_sorted:
    #ls["l"] = sorted(ls["l"], key=lambda k: k[ls["key"]])
    ls["l"] = copy.copy(sorted(ls["l"], key=lambda k: k[ls["key"]]))
    for u in ls["l"]:
      print "c:", u["urc"],    
print

for u in items["gi"]:
  print "d:", u["urc"],    


'''
a: 1 a: 2
b: 1 b: 2
c: 1 c: 2
d: 2 d: 1
'''

Tags: lambdakey代码intestforitemsbe