因此,我正在考虑让自己(以及任何关心使用它的人当然)在Python中用于Pygame的一个小样板文库.我想要一个系统,其中应用程序的设置与yaml文件一起提供.
所以我认为如果库提供了一个默认的yaml树并将其与用户提供的树合并它将会很有用.为了实用起见,我想知道是否有可能在那里有一个例程:
在任何情况下,在用户提供yaml的树中重叠默认值,用户提供的分支替换库提供的分支.
在用户提供的yaml不与默认树重叠的任何情况下,默认树都会保留.
由用户提供的yaml提供的树中的任何超级分支都被附加.
我知道这个解释很冗长,因为它可能很清楚我要求的是什么.我想知道获得免费是否有点多.
Mar*_*rot 21
您可以使用PyYAML解析文件,然后使用以下函数合并两个树:
def merge(user, default):
if isinstance(user,dict) and isinstance(default,dict):
for k,v in default.iteritems():
if k not in user:
user[k] = v
else:
user[k] = merge(user[k],v)
return user
Run Code Online (Sandbox Code Playgroud)
或者,您可以在调用此函数之前执行用户树的深层复制.
| 归档时间: |
|
| 查看次数: |
9137 次 |
| 最近记录: |