仅使用字典理解转换一个项目

时间:2016-05-25 14:10:59

标签: python dictionary

干杯,

我目前正在编写一段代码,而且我正在尝试为我的问题找到最好的,更加pythonic和CPU低成本的解决方案。

我实际上有一个"索引值"我通过文件阅读,例如:

>>> list = ['index_1    200', 'index_2    500', 'index_3    50']
>>>
>>> list
['index_1    200', 'index_2    500', 'index_3    50']

我正在尝试创建字典理解,我将索引名称维护为string,但将值转换为int。我发现实现这一目标的方式是:

>>> dict((line.split()[0], int(line.split()[1])) for line in list)
{'index_2': 500, 'index_3': 50, 'index_1': 200}

但是(line.split()[0], int(line.split()[1])部分看起来像是可以用更好的方式完成的,因为我的列表示例实际上只是一个例子,我可能会在以后找到大量的索引。

感谢您的帮助。

1 个答案:

答案 0 :(得分:8)

您可以避免将每个字符串拆分两次,并且可以使用这样的字典理解:

>>> mylist = ['index_1    200', 'index_2    500', 'index_3    50']
>>> mydict = {k:int(v) for (k,v) in (line.split() for line in mylist)}
>>> mydict
{'index_2': 500, 'index_3': 50, 'index_1': 200}

修改

在Python 2.6中你可以做同样的事情,但没有dict理解语法:

 >>> mydict = dict((k,int(v)) for (k,v) in (line.split() for line in mylist))