首页 > 解决方案 > 通过跳过第一个键值对字典进行迭代

问题描述

我已经定义了一个带有键和数据框的字典,就像这样

data = {'Value':[0,1,2,3,4]}
kernel_df = pd.DataFrame(data, index=['M0','M1','M2','M3','M4'])
my_dict = {'dummy':kernel_df}

并且my_dict后来填充了适当的数据。接下来,我想从第二个键开始遍历字典,因为第一个(索引 0)是虚拟的,我想跳过它。如果我使用

for key in my_dict:

然后第一个键也被读取。如果我使用

for i in {1..len(my_dict)}:
    df = my_dict[i]

我收到以下错误

    for i in {1..len(my_dict)}:
AttributeError: 'float' object has no attribute 'len'

我该如何解决?

标签: pythondictionary

解决方案


字典没有固有的顺序(好吧,在 Python 3.7中发生了变化,现在它们保持了插入的顺序

但是,您仍然不能像索引列表那样索引字典。(好吧,如果你真的愿意,你可以接近那种行为,但我会在最后解决这个问题)。

在您的情况下,您可以遍历键并跳过键,如果它是“虚拟”(或任何您定义的)。

for key in my_dict:
    if key != 'dummy':
        do your thing

一旦您知道您的字典已经填充了正确的值,也许更好的选择是简单地删除“虚拟”键。

现在,回到获取“第一个密钥”,因为一个 >= Python 3.7 用户:
好的,如果有人真的想依赖版本特定功能的技术实现,他们可能会做这样的事情:

for idx, key in enumerate(my_dict.keys()):
    if idx != 0:
        do your thing

不过,这与惯用代码相去甚远,所以实际上,您不应该这样做。


推荐阅读