我需要使用两个键来分配和检索数据切片,而且我也不是先验地知道其中一个键的值。

具体来说,我正在下载和处理文本数据文件,这些文件按年份和持续时间(例如1小时)列出了浮动值。持续时间键是预先确定的,但年份不是。顺序提供数据,一次仅提供一行(换句话说,不是表格格式)。

因为我不知道给定文件中的所有年份,所以到目前为止,我已经尝试使用defaultdict(dict)。这是我的示例代码。

from collections import defaultdict
a = defaultdict(dict)

a[2006][2]=0.024
a[2004][2]=0.157
a[2000][1]=0.64
a[2005][2]=0.346
a[2003][2]=0.165
a[2003][6]=0.8
a[2007][12]=0.642
a[2003][1]=0.664
a[2002][6]=0.579
a[2004][1]=0.829
a[2001][6]=0.344
a[2003][3]=0.508
a[2003][12]=0.66
a[2002][1]=0.923

:a

defaultdict(dict,
            {2006: {2: 0.024},
             2004: {2: 0.157, 1: 0.829},
             2000: {1: 0.64},
             2005: {2: 0.346},
             2003: {2: 0.165, 6: 0.8, 1: 0.664, 3: 0.508, 12: 0.66},
             2007: {12: 0.642},
             2002: {6: 0.579, 1: 0.923},
             2001: {6: 0.344}})


我需要做三件事。


检索所有年份键。记住,我不提前知道他们。
对于每年,检索工期键:值对。我想通了。

: a[2002]

{6: 0.579, 1: 0.923}

对于每个持续时间,检索年份键:值对。我被困在这个。


感谢您提供的任何帮助。如果我应该以numpy,pandas或其他方式执行此操作,请随时重定向我。请记住,我不知道提前的年份范围,即使我确实有没有数据的随机间隔年份。

最佳答案

不确定您要查找的是什么,但是要获取所有的年份键及其值,可以通过以下方式遍历该词典:

for i in a:
    print(i, a[i])


输出:

2006 {2: 0.024}
2004 {2: 0.157, 1: 0.829}
2000 {1: 0.64}
2005 {2: 0.346}
2003 {2: 0.165, 6: 0.8, 1: 0.664, 3: 0.508, 12: 0.66}
2007 {12: 0.642}
2002 {6: 0.579, 1: 0.923}
2001 {6: 0.344}

关于python - 多维字典键的切片,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59994055/

10-14 09:47