[英]Convert a nested Dictionary to a nested List with List Comprehension method in Python
我想使用 List Comprehension 方法将以下嵌套字典转换为嵌套列表列表以获得更好的性能:
n = {
"ETHBTC": {
"2021-09-04 01:55:00": {
"open": 0.078998,
"close": 0.079007,
"volume": 44.952200000000005
},
"2021-09-04 01:56:00": {
"open": 0.079005,
"close": 0.078959,
"volume": 68.62790000000001
},
"2021-09-04 01:57:01": {
"open": 0.07896,
"close": 0.078962,
"volume": 131.6615000000001
},
"2021-09-04 01:58:00": {
"open": 0.078966,
"close": 0.078988,
"volume": 157.38520000000005
}
}
"BTCUSDT": {
"2021-09-04 01:55:00": {
"open": 49730.55,
"close": 49710.01,
"volume": 28.57857999999999
},
"2021-09-04 01:56:00": {
"open": 49710.0,
"close": 49681.35,
"volume": 19.088980000000017
},
"2021-09-04 01:57:00": {
"open": 49681.36,
"close": 49737.05,
"volume": 20.885500000000008
},
"2021-09-04 01:58:00": {
"open": 49737.06,
"close": 49757.33,
"volume": 35.782369999999965
}
}
预期输出与“关闭”值一起说,我试图在一个线性代码中执行此操作以提高效率:
result = ["ETHBTC"[0.079007, 0.078959, 0.078962, 0.078988],
"BTCUSDT"[49710.01, 49681.35, 49737.05, 49757.33]]
仅仅因为屏幕上的代码更少并不意味着它更高效。 除此之外,如果向下转换数据意味着丢失有意义的数据,那么它对于宏伟的计划来说是多余的。 此外,python 不是从效率开始,而是从功能开始。 之后,您可以重新审视并改进瓶颈/等...
也就是说,我可以看到这样做的必要性,是的,最有效和最易读的方法之一可能是一行代码。 请参考Python 之禅,因为它指的是我刚才所说的。
但是为什么要列出来呢? 哈希表/查找不是比唯一键的字典列表更有效吗?
最后,我告诉你什么是实现预期输出的正确方法。 但请考虑我上面的想法。
>>> {k: [d['close'] for d in v.values()] for k, v in n.items()}
{"ETHBTC": [0.079007, 0.078959, 0.078962, 0.078988],
"BTCUSDT": [49710.01, 49681.35, 49737.05, 49757.33]}
如果你必须有一个字典列表,你可以很容易地修改上面的代码来达到预期的结果:
>>> [{k: [d['close'] for d in v.values()]} for k, v in n.items()]
[{"ETHBTC": [0.079007, 0.078959, 0.078962, 0.078988]},
{"BTCUSDT": [49710.01, 49681.35, 49737.05, 49757.33]}]
仅供参考:在向某人(尤其是本网站)提问之前,您应该尝试自己找到答案或尝试找到答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.