【发布时间】:2020-09-04 07:55:15
【问题描述】:
我有一个由嵌套字典和列表组成的数据结构..
System1 -- Charge1 -- Ion1 -- Ion2 -- List of Values
-- Charge2 -- Ion1 -- Ion2 -- List of Values
-- Charge2 -- Ion2 -- Ion4 -- List of Values
-- Charge2 -- Ion3 -- Ion4 -- List of Values
System2 -- Charge1 -- Ion1 -- Ion2 -- List of Values
... and so on
SystemX 是最高级别(0 级)字典中的键,ChargeX 是 1 级字典中的键,IonX 在 lvl2 中,IonX(第二个实例)在 lvl3 中,然后我们有一个包含某些值的列表类型对象我想在函数中使用。
现在,如果这些都是列表,并且我想将所有值用于某个 IonX-IonX 组合(按此顺序),我可以使用function(data[:][:]["Ion1"]["Ion2"]) 对其进行切片吗?
无论哪种方式,我现在都搜索了很长一段时间,但找不到真正解决相同问题的问题...
如何最好地使用我的字典结构?
迭代每个字典中的所有键直到达到所需级别并将所有值列表(如果存在)返回到新字典/列表中是否是个好主意? 那是最简单、最优雅甚至最 Pythonic 的方式吗?我真的不敢相信这是..
我现在真的不知道如何使用列表理解来实现我的目标,但我想我可以想出一些办法,尽管结果可能会很丑。
我几乎没有使用生成器和yield 的经验,尽管它似乎可以提供帮助。如果您建议这种方法,我会请您更详细地解释。
提前谢谢大家。希望你们能在这里帮助我。真的卡住了。
干杯,BUFU
【问题讨论】:
-
出于好奇,所有“值列表”的大小都相同吗?这可能是使用
pandas的好地方。 -
代码中是否还有其他地方 System -> Charge -> Ion 层次结构很重要?您可以重塑您的数据(或复制它并重塑副本)以使离子成为主键。
-
@0x5453 不,很遗憾没有。但感谢您的链接。将检查这些 DataFrames。
-
用于重塑数据:它会在工作流的不同部分导致相同的问题.. 交换功能...
标签: python dictionary slice