我有一个lxml.objectify
数据结构,我从RESTful Web服务获得。如果存在,我需要更改设置,如果不存在,则创建它。现在我有以下几条线,但我觉得它很丑。我正在查看的结构中有一个子元素列表,它们都具有相同的结构,所以我不能不幸找到特定的标记。如何更好地构建此代码?
thing_structure = lxml.objectify(get_from_REST_service())
found_thing = False
if thing_structure.find('settings') is not None:
for i, foo in enumerate(thing_structure.settings):
if foo.is_what_I_want:
modify(thing_structure.settings[i])
found_thing = True
if not found_thing:
new = lxml.etree.SubElement(thing_structure, 'setting')
modify(new)
send_to_REST_service(thing_structure)
的'foo'名称是不是我在实际的代码中使用,我只是想降低复杂一点,并没有把具体的事情我的代码库 - 更多的一般结构。我其实重新绑定了这个项目,这就是为什么我使用'i'。 – Daenyth 2010-09-29 17:50:26
@Daenyth,'foo'非常明显(这就是为什么我在那里有笑脸的原因),但是消除项目重组的重要不同操作是过于简单化 - 无论您是否在进行重新绑定(因此需要枚举)或不要(因此不需要它)。随着你的新信息,并始终假设你需要能够调用**修改一次或多次**(不只是一次),我不能看到大量的简化(一些技巧,是的,但它们可能会损坏清晰度而不是增强)。 – 2010-09-29 20:53:10
亚历克斯,你可以看看这个当你有机会:http://stackoverflow.com/questions/3826473/boolean-operations-in-python-ie-the-and-or-operators?谢谢 – NullUserException 2010-09-29 22:54:11