将一个元素列表交换为int

时间:2012-06-06 14:44:46

标签: python

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

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

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

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

6 个答案:

答案 0 :(得分:3)

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

a[2].keys()[0]

next(a[2].iterkeys())

都返回int 36

获取所有密钥的列表:

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

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

也许你应该将你的dicts列表转换成一个简单的词典:

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

获取{2: 102, 3: 103, 23: 100, 36: 103, 43: 123},您可以使用简单d.keys()获取所有密钥并获取[3, 2, 43, 36, 23],但订单不守用。

答案 1 :(得分:2)

>>> [next(iter(d)) for d in a]
[43, 3, 36, 2, 23]

答案 2 :(得分:1)

你有一个dicts列表,所以keys方法会给你dict的键,因为它们都只有一个条目,所以用[0]来引用它:

>>> [d.keys()[0] for d in a]
[43, 3, 36, 2, 23]

答案 3 :(得分:0)

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

尝试:

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

将提取键,因此您将最终打印出来:43,3,36,2,23。如果您想要值(如123,103,36,102,100),请使用b.values()[0]

答案 4 :(得分:0)

如果您在结果列表中有[36]并且想要到达该项目,则只需下标到元素0。

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

所以,在你的情况下:

print a[2].keys()[0]

答案 5 :(得分: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)]