Python:在defaultdict中按索引获取列表而不是键

时间:2014-03-19 21:34:59

标签: python python-2.7 defaultdict

我是python的新手,我已经陷入数据类型问题。

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

创建一个类似于

行的默认字典
dd = [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

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

print(dd[0])

但这个游戏我输出以下内容

[][][]

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

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

有没有办法按索引号抓取列表,还是只能使用密钥?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

请注意,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