2012-08-31 31 views
0

我正在从xml文件读取元素列表,并将数据转换为2个字典。这是建立字典最快的方法吗?

这是最快的方式吗? (我不认为这是最好的,你们总是让我感到吃惊。;-)

ADict = {} 
BDict = {} 
for x in fields: 
    key = x.get('key') 
    ADict[key] = x.find('A').text 
    BDict[key] = x.find('B').text 

我想补充一个一个是一个坏主意,但它在一行写。又名更Python的方式这样

ADict,BDict = [dict(k) for k in zip(*([(x.get('key'),x.find('A').text),(x.get('key'),x.find('B').text)] for x in fields))] 

我不认为这是更好的,有两个原因, 第一,x.get('key')被称为两次 第二,创造了太多的临时元组

+1

你的第一种方法很好。如果他们对许多人有更多的理解,没有理由将东西塞进一行。 – katrielalex

+5

第二种方式不是更pythonic,因为它使用更高级的功能,它更少,因为它失去了可读性 – moopet

+2

只是在一行上不是[pythonic](http://stackoverflow.com/questions/58968/what - 定义-pythonian - 或Python化)。 –

回答

4

没有测试,但应该工作

ADict = dict((x.get('key'), x.find('A').text) for x in fields) 
BDict = dict((x.get('key'), x.find('B').text) for x in fields) 
+1

使用'{x.get('key'):x.find('A').text for x in fields}',它工作在Python> = 2.7 – MostafaR

相关问题