pythonic解决方案?遍历字典,偶尔列出一个值作为值

时间:2013-10-04 15:03:50

标签: python python-2.7 dictionary

我有一个字典,它定义了通过将某些关键字映射到某些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人,我想开始做一些更热门的事情。现在我有这样的事情:

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

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

非常感谢

1 个答案:

答案 0 :(得分: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]