在python中访问字典元素

时间:2014-07-15 08:14:53

标签: python json twitter dictionary

我使用一些推特数据,通过监控推特流获取数据,然后将结果保存在* .txt文件中

我试图用python操作这个txt文件,因为我使用了json.loads()指令,文件中的每一行都保存了twitter流结果,这样我得到了每个文件行一个json对象。

for line in twitter_file
    data = json.loads(line)

json对象(一个文件行的一个json对象)被加载到一个名为“data”的变量中

Everyting正在那里工作,当我尝试访问“data”json对象中的元素时,我可以这样做,例如,如果我能看到place元素,我可以用data [“place”]来做,所以我明白了:

"place":{
            "id":"00a961d91f76dde8",
            "url":"https:\/\/api.twitter.com\/1.1\/geo\/id\/00a961d91f76dde8.json",
            "place_type":"city",
            "name":"Capital - Corrientes",
            "full_name":"Capital - Corrientes",
            "country_code":"AR",
            "country":"Argentina",
            "contained_within":[]
            }

我可以访问“place”元素,如果我执行打印数据[“place”],我可以看到上面显示的文字。

当我尝试访问特定密钥就位时,问题出现了,

我试着这样做

data["place"]["place_type"]

我正在等待获得“城市”值,但我无法做到,我收到以下错误:TypeError: "NoneType" object has no attribute '__getitem__'

我还尝试了其他方式来显示键值对,其中包含以下内容:

for key,value in data["data"].items()
    print key

但我没有得到结果

我也试过

print data["place"].keys()[0]

要打印第一个元素,但它也不起作用。我收到以下错误消息:AttributeError: 'NoneType' object has no attribute 'keys'

似乎我的数据[“place”]并没有被Python视为字典,这就是我想的,但我不确定,我是Python的新手,所以任何评论都会非常有帮助对我来说。

1 个答案:

答案 0 :(得分:0)

您正在循环遍历文件并将每行加载为JSON。 这些JSON对象中的一些place设置为字典,其他将其设置为None

每当您刚刚加载一行,其中place键设置为None时,您就会获得AttributeError例外。

您需要先测试一下:

place = data['place']
if place is not None:
    print place['place_type']