干杯,
我目前正在编写一段代码,并且正在尝试为我的问题找到最好的、更 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])
部分看起来可以用更好的方式完成,因为我的列表example 实际上只是一个例子,以后我可能会发现大量的索引。
感谢您的帮助。
最佳答案
您可以避免将每个字符串拆分两次,并且可以像这样使用字典推导式:
>>> 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 中,你可以做几乎相同的事情,但没有字典理解语法:
>>> mydict = dict((k,int(v)) for (k,v) in (line.split() for line in mylist))
关于python - 仅转换一个具有字典理解的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37439734/