python - 将此文件转换成字典

标签 python python-2.7 numpy dictionary

我在 Stackoverflow 上四处寻找,但未能找到此处讨论的内容。我有一个要转换成字典的列表。

3
banana
apple
orange
5.00E-2
1
7.02E-4
1.00E-4
4
5.13E-4
-5.76E-2
8
7.23E-8
-6.12E-9
4
5.02E

数字 3 是键的数量。接下来的 3 个字符串是键名。接下来的 3 个值是列表的第一个元素……等等。例如我会得到:

  mydict['banana']=[ 5.00E-2, 1.00E-4, -5.76E-2, -6.12E-9]
  mydict['apple'] =[1,           4,       8,        4]
  mydict['orange']=[ 7.02E-4, 5.13E-4,  7.23E-8,   np.nan ]

请注意,最后一个元素不完整,只是“5.02E”,必须用 numpy.nan 替换。此外,每个列表中的元素数量必须相同,缺失值应为 numpy.nan。这是一个 python 2.7.x 问题。

所以我的问题是我正在寻找创建字典的最佳方法。怎么做?

最佳答案

num = mylist[0]
mydict = {}
for i in range(num):
    mydict[mylist[i + 1]] = mylist[i + 1 + num::num]

或者如果您更喜欢单行,

mydict = {mylist[i + 1]:mylist[num + i + 1::num] for i in range(mylist[0])}

请注意,这不会用 numpy.nan 替换缺失的项目;那会是这样的

from itertools import izip_longest
import numpy as np

num      = mylist[0]
labels   = mylist[1:num + 1]
num_cols = (len(mylist) - 2) // num
cols     = (mylist[1 + c*num::num] for c in range(1, num_cols + 2))
rows     = izip_longest(*cols, fillvalue=np.nan)

mydict = dict(zip(labels, rows))

关于python - 将此文件转换成字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28383525/

相关文章:

python - 有没有办法让用户定义的 Python 函数像内置语句一样运行?

python - 在Python中获取txt文件中特定单词的计数?

python - 使用生成器表达式返回多个值

python-3.x - 在 numpy 中获取索引

python - 如何将 2d 数组堆叠在现有 3d 数组上 (python)

python - 对非结构化 THREDDS 数据进行子采样的简单、可编写脚本的方法?

python - 使用正则表达式根据条件匹配字符串

html - python HTML for循环格式

python-2.7 - 保留 Datapath#ports 以保持兼容性

python - 切换 python 发行版