Skip to main content
 首页 » 编程设计

python之python 解决方案以偶尔的列表作为值遍历字典

2025年05月04日18zlslch

我有一个字典,它定义了通过将某些关键字映射到某些 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 中的一个偶然值将是一个包含两个或多个参数和一个尾随分隔符的列表,那么检查它的最惯用的方法是什么?我想像检查 scheme[k] 是否是一个列表的实例,然后逐个检查该列表。我可以很容易地编写代码,但是有没有比执行条件 isinstance().... 更优雅的方法?

非常感谢

请您参考如下方法:

我同意@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]