将嵌套字典转换为各种列表
transforming nested dictionaries into various lists
我有一个仓库开始和结束数量的嵌套字典。我想用 matplotlib 将这些数据绘制成堆栈图。我需要转换数据,使 x 值是一个列表,y 值是一个列表列表。我想将绘图限制为键小于或等于截止日期 'cutoff' 的键。我编写了所有代码来绘制该图,但在将数据从字典转换为 x 和 y 值时遇到了问题。在我的例子中,我在下面手动输入了值。在真实脚本中,我有一个更大的数据集,需要一种方法来实际编写转换代码。
from datetime import datetime
import matplotlib
import matplotlib.pyplot as plt
d = {
datetime(2015, 1, 19) : {'start qty': 13 , 'end qty': 12},
datetime(2015, 1, 20) : {'start qty': 10 , 'end qty': 34},
datetime(2015, 1, 21) : {'start qty': 30 , 'end qty': 35},
datetime(2015, 1, 22) : {'start qty': 20 , 'end qty': 40},
}
cutoff = datetime(2015, 1, 21)
y = [[13,10,30],[12,34,35]]
x = [datetime(2015, 1, 19), datetime(2015, 1, 20), datetime(2015, 1, 21)]
plt.stackplot(x,y)
plt.show()
要获取日期,只需检查您的截止日期:
x = [x for x in d if x <= cutoff]
y 使用键:
y = [[d[k]['start qty'],d[k]['end qty']] for k in x]
如果您正在创建字典并且数据是有序的,请使用 orderedDict 或 sort
x
.
供您编辑:
x = [dte for dte in d if dte <= cutoff]
y = [[],[]]
for k in x:
y[0].append(d[k]["start qty"])
y[1].append(d[k]["end qty"])
我有一个仓库开始和结束数量的嵌套字典。我想用 matplotlib 将这些数据绘制成堆栈图。我需要转换数据,使 x 值是一个列表,y 值是一个列表列表。我想将绘图限制为键小于或等于截止日期 'cutoff' 的键。我编写了所有代码来绘制该图,但在将数据从字典转换为 x 和 y 值时遇到了问题。在我的例子中,我在下面手动输入了值。在真实脚本中,我有一个更大的数据集,需要一种方法来实际编写转换代码。
from datetime import datetime
import matplotlib
import matplotlib.pyplot as plt
d = {
datetime(2015, 1, 19) : {'start qty': 13 , 'end qty': 12},
datetime(2015, 1, 20) : {'start qty': 10 , 'end qty': 34},
datetime(2015, 1, 21) : {'start qty': 30 , 'end qty': 35},
datetime(2015, 1, 22) : {'start qty': 20 , 'end qty': 40},
}
cutoff = datetime(2015, 1, 21)
y = [[13,10,30],[12,34,35]]
x = [datetime(2015, 1, 19), datetime(2015, 1, 20), datetime(2015, 1, 21)]
plt.stackplot(x,y)
plt.show()
要获取日期,只需检查您的截止日期:
x = [x for x in d if x <= cutoff]
y 使用键:
y = [[d[k]['start qty'],d[k]['end qty']] for k in x]
如果您正在创建字典并且数据是有序的,请使用 orderedDict 或 sort
x
.
供您编辑:
x = [dte for dte in d if dte <= cutoff]
y = [[],[]]
for k in x:
y[0].append(d[k]["start qty"])
y[1].append(d[k]["end qty"])