在解析的json中引用元素

时间:2013-11-30 19:53:38

标签: python json

我对python和编码相对较新,所以我真的需要帮助。这是我的代码,我将告诉你我正在尝试和失败的事情,以后再引用:

>>> import json
>>> import urllib2
>>> j = urllib2.urlopen('http://maps.googleapis.com/maps/api/distancematrix/json?origins=Dublin+Ireland&destinations=Cork+Ireland|Limerick+Ireland|Galway+Ireland|&mode=driving&sensor=false')
>>> js = json.load(j)
>>> ourResult = js['rows'][0]['elements']
>>> for rs in ourResult:
>>> print rs['distance']
{u'text': u'255 km', u'value': 255493}
{u'text': u'197 km', u'value': 196553}
{u'text': u'208 km', u'value': 208373}

我试图仅引用距离值(即“文本”值),但我所能做的就是引用这些字母。我试过了:

>>> x = rs['distance']
>>> z = [y[0] for y in x]
>>> print z
[u't', u'v']

我所能提到的只是字母而不是数字。 我不知道还有什么可以尝试,所以任何帮助都会非常感激。

谢谢,

尼克

1 个答案:

答案 0 :(得分:3)

您想要访问字典中的值,I.E。:

for rs in ourResult:
    print(rs['distance']['text'])

您的问题是y in dictionary列出字典的键,而不是值。在上一次列表理解中,您将打印每个键的0索引项(第一个字母)。

只是为了踢,尝试复制并运行它:

from collections import OrderedDict

dictionary = OrderedDict([("list", "value 0"), ("the", "value 1"), ("keys", "value 2")])

print("key in dictionary:")
for key in dictionary:
    print(key)

print("value in dictionary.values():")
for value in dictionary.values():
    print(value)

print("key, value in dictionary.items():")
for key, value in dictionary.items():
    print(key, value)

OrderedDict的行为与普通词典相似,但也会跟踪key:value对的顺序。我在这里使用了一个这样的示例输出,但你可以认为它只是.values.keys.items的另一个字典。