1

a = [{43:123}, {3:103}, {36:103}, {2:102}, {23:100}]

当每个键都是 id 并且 value 表示多个点时,我如何从中提取 id 。我试过用这个:

for b in a: 
     print a[i].keys()
     i+=1

Python 结果是一个列表,但我需要整数类型。例如 print a[2].keys()结果[36],我需要 36,它是 int。谢谢

4

6 回答 6

3

访问此类列表中的第一个元素:

a[2].keys()[0]

或者

next(a[2].iterkeys())

都返回 int 36

要获取所有键的列表:

[next(d.iterkeys()) for d in a]

返回[43, 3, 36, 2, 23]

也许您应该将您的字典列表转换为一个简单的字典:

d = {}
for x in a:
    d.update(x) 

获取{2: 102, 3: 103, 23: 100, 36: 103, 43: 123},您可以通过 simpled.keys()和 getting获取所有密钥[3, 2, 43, 36, 23],尽管顺序不守恒。

于 2012-06-06T14:46:31.560 回答
2
>>> [next(iter(d)) for d in a]
[43, 3, 36, 2, 23]
于 2012-06-06T14:52:49.143 回答
1

您有一个字典列表,因此该keys方法将为您提供字典的键,并且由于它们都只有一个条目,请使用[0]它来引用它:

>>> [d.keys()[0] for d in a]
[43, 3, 36, 2, 23]
于 2012-06-06T14:47:48.163 回答
0

正如我在评论中对您的其他问题的回应,这就是您想要的:

尝试:

for b in a: 
    print b.keys()[0]   

这将提取密钥,因此您最终将打印出:43、3、36、2、23。如果您想要取而代之的值(如 123,103,36,102,100),请使用b.values()[0].

于 2012-06-06T14:47:10.527 回答
0

如果结果列表中有 [36] 并且想要访问该项目,只需下标元素 0。

即,只需附加[0]到使您 [36] 到达列表中的第一个(也是唯一一个)项目的表达式。

所以,在你的情况下:

print a[2].keys()[0]
于 2012-06-06T14:47:24.797 回答
0

尝试这个:

def getKeyAtIndex(a, idx):
    return a[idx].keys()[0]

并这样称呼它:

print getKeyAtIndex(a, 2)
> 36

作为旁注 - 这是您使用相同数据结构发布的第二个问题 - 字典列表,其中每个字典都包含一个具有单个值的键。这没有多大意义,在这种情况下使用字典你什么也得不到。也许一本字典会更好?像这样:

{43:123, 3:103, 36:103, 2:102, 23:100}

或者可能是一个元组列表?像这样:

[(43, 123), (3, 103), (36, 103), (2, 102), (23, 100)]
于 2012-06-06T14:50:06.797 回答