在下面的代码中,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
'''
测试2中的ls[“l”]和items[“gi”]指向不同的对象。我可以使用locals()[“items”]来访问同一个对象。你知道吗
相关问题 更多 >
编程相关推荐