在Python中访问对象的第n个元素

时间:2017-07-30 19:38:48

标签: python

这是json

{u'skeleton_horde': 2, u'baby_dragon': 3, u'valkyrie': 5, u'chr_witch': 1, u'lightning': 1, u'order_volley': 6, u'building_inferno': 3, u'battle_ram': 2}

我正在尝试使列表看起来像这样

skeleton_horde baby_dragon valkyrie lightning order_volley building_inferno

这是python

print(x['right']['troops'])

令人惊讶的是没有关于如何获取对象的n元素(不是数组)的文档。我试过了:

print(x['right']['troops'][1])

但它不起作用。

3 个答案:

答案 0 :(得分:2)

您希望使用dict.keys()来获取dict键值的列表*:

print(list(x['right']['troops'].keys()))

*它是actually a view,在Python 3中。它将是Python 2中的列表。

答案 1 :(得分:2)

没有办法让dict离谱器中的第n个项目(也许你已经将Python dicts与JavaScript对象混为一谈),原因很简单,因为它们是无序的。

但是有一种字典可以维护其键的顺序,恰当地命名为OrderedDict

解决方案

正如另一位评论者所指出的那样,解决您的问题的方法,但它仍然不会按照定义的顺序为您提供密钥:

' '.join(obj['right']['troops'])

注意

在最新版本的CPython(3.6)中,字典键确实是有序的。我不确定我是否依赖于特定于实现的行为,或者您是否需要在这种情况下订购密钥,但我们很高兴知道。转发@ScottColby向我指出这个!

答案 2 :(得分:2)

首先,您要提取密钥:

x['right']['troops']

然后你想用散布的空格加入它们

' '.join(x['right']['troops'])

这将与您所拥有的顺序不同,因为Python字典是无序的。