【问题标题】:Python : Get list by index not key in defaultdictPython:按索引获取列表而不是defaultdict中的键
【发布时间】:2014-03-19 21:34:58
【问题描述】:

我是 python 新手,我陷入了数据类型问题。

我有一个看起来有点像这样的脚本 dd = defaultdict(列表) 对于 arr 中的 i: dd[颜色].append(i)

创建一个默认的字典,类似于

dd = [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

但是我现在需要访问第一个列表([2,4])。我试过了

print(dd[0])

但是这个游戏我有以下输出

[][][]

我知道 defaultdict 中有数据,因为我已经完整地打印了它。但是,除了通过其字典索引访问第一项之外,我不知道如何访问它。但是,除了通过字典键访问列表之外,我不知道如何获取它。但是,在填充字典之前,我不知道密钥的名称。

我考虑过创建一个列表列表而不是 defaultdict,但是能够通过键搜索对于代码的另一部分非常有用,所以我想尽可能维护这个数据结构。

有没有办法通过索引号来获取列表,还是只能使用键来获取?

【问题讨论】:

    标签: python python-2.7 defaultdict


    【解决方案1】:

    您可以获取键列表,按索引选择键,然后访问该键。

    print(dd[dd.keys()[0]])
    

    【讨论】:

    • dd.keys()[0] 提高 TypeError: 'dict_keys' object is not subscriptable
    【解决方案2】:

    请注意,Python 中的字典是一个 无序 集合。这意味着键的顺序是未定义的。考虑以下示例:

    from collections import defaultdict
    d = defaultdict (int)
    d['a'] = 1
    d['b'] = 2
    d['c'] = 3
    d['d'] = 4
    d['e'] = 5
    print (d)
    

    我的 Python2 给出:

    defaultdict(<type 'int'>, {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4})
    

    顺便说一下,Python3 的输出是不同的:

    defaultdict(<class 'int'>, {'c': 3, 'b': 2, 'a': 1, 'e': 5, 'd': 4})
    

    因此,您将不得不使用其他方法来记住填充字典的顺序。按您需要的顺序维护单独的键(颜色)列表,或使用OrderedDict

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多