1

我有一个字典,它通过将某些关键字映射到某些 XML 元素路径来定义翻译 XML 数据的方案。字典看起来像这样:

scheme = { 'phone' :  'People/Analyst/Phone', \
           'email' : 'People/Analyst/Email', \
           'address' : 'People/Analyst/Address' \
           ... and so on

我现在必须适应这样一种情况,即某个键可能需要映射到两个或多个需要连接的元素路径。例如:

scheme = { 'phone' :  'People/Analyst/Phone', \
           'email' : 'People/Analyst/Email', \
           'address' : 'People/Analyst/Address' \
           'name' : [ 'People/Analyst/FirstName', 'People/Analyst/FirstName', ' ' ]
           ... and so on

我认为将列表作为该方案的字典中的值是正确的方法。但是浏览这样一本字典的惯用方式是什么?作为一个对 Python 比较陌生的人,我想开始做一些更 Python 的事情。现在我有这样的事情:

for k in scheme:
  dataStore[k] = fetchXMLText(scheme[k])

但是,如果方案中的偶尔值将是一个包含两个或多个参数和一个尾随分隔符的列表,那么检查这个最惯用的方法是什么?我想像检查 scheme[k] 是否是列表的实例,然后单独浏览该列表。我可以很容易地编写代码,但是有没有比执行条件 isinstance().... 更优雅的方法?

非常感谢

4

1 回答 1

6

我同意@EmmettJ.Butler。把它变成一个完整的答案:

假设你有:

scheme = { 'phone'  : ['People/Analyst/Phone'], \
           'email'  : ['People/Analyst/Email'], \
           'address': ['People/Analyst/Address'] \
           'name'   : [ 'People/Analyst/FirstName', 'People/Analyst/FirstName', ' ' ]
           ...

然后,您可以按如下方式对其进行迭代:

for k,v in scheme.iteritems():
  dataStore[k] = [fetchXMLText(path) for path in v]
于 2013-10-04T15:10:31.290 回答