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
答案 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)]