干杯,
我目前正在编写一段代码,而且我正在尝试为我的问题找到最好的,更加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])
部分看起来像是可以用更好的方式完成的,因为我的列表示例实际上只是一个例子,我可能会在以后找到大量的索引。
感谢您的帮助。
答案 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))