我操纵了一个数据集,看起来像这样:
# data_dict = { 'epoch':[[int(n), int(m), int(c + cs), int(s + ss)], ...], ... }
其中每个键('epoch'
)都与列表列表相关联,如下所示:
# [1, 0, (c + cs)_10, (s + ss)_10]
# [2, 0, (c + cs)_20, (s + ss)_20]
# [3, 0, ...]
# [4, 0, ...]
# [5, 0, ...]
# [1, 1, ...]
# [1, 2, ...]
# [1, 3, ...]
# [1, 4, ...]
# [1, 5, ...]
# .
# .
# .
# [5, 5, (c + cs)_55, (s + ss)_55]
我想要的是能够访问(c + cs)_mn
'epoch'
的任何值以及m
和n
的值。
我最初的想法是以某种方式将每个列表列表转换为多维列表,因此我可以通过调用data_dict['epoch'][m][n]
来查看我想要的值。有可能这样做吗?
更进一步,这样做甚至可行吗?原始数据是FORTRAN格式的,但我对FORTRAN一无所知。因此,我采用了这种(公认的复杂)方法将数据转换为易于阅读的内容。
作为参考,我正在查看的数据here。
答案 0 :(得分:1)
根据您的数据现在的情况,蛮力只是
for item in your_list:
if item[0] == m and item[1] == m:
return item[2]
鉴于您现在的数据结构如何,您可以执行以下操作
new_dict = {}
for row in data_dict['epoch']:
if new_dict.get(row[0]):
new_dict[row[0]].update({row[1]:row[2]})
else:
new_dict[row[0]] = {row[1]:row[2]}
return_data = {'epoch':new_dict}
答案 1 :(得分:0)
d = {}
for v in data_dict['epoch']:
d.setdefault(v[0], {})[v[1]] = v[2]
或者使用Python的内置defaultdict
,您可以轻松获得它
from collections import defaultdict
def tree(): return defaultdict(tree)
d = tree()
for v in data_dict['epoch']: d[v[0]][v[1]] = v[2]
data_dict = {'epoch':d}
您可以致电data_dict['epoch'][m][n]
获取价值。