在Python中访问字典元素

1 投票
1 回答
808 浏览
提问于 2025-04-18 13:22

我正在处理一些推特数据,我通过监控推特的实时数据流来获取这些数据,然后把结果保存到一个*.txt文件里。

我想用Python来处理这个txt文件,为此我使用了json.loads()这个指令,针对文件中的每一行,也就是保存推特数据流结果的每一行,这样我就能把每一行当作一个json对象来处理。

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

这个json对象(每一行对应一个json对象)被加载到一个叫“data”的变量里。

一切都运行得很好,当我尝试访问“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”这个元素,如果我执行print data["place"],我能看到上面显示的文本。

问题出现在我尝试访问“place”字典中的一个特定键时,

我试着这样做:

data["place"]["place_type"]

我希望能得到“city”的值作为结果,但我做不到,出现了以下错误: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'

看起来我的data["place"]在Python中并没有被当作字典来处理,我猜是这样,但我不太确定,我对Python还很陌生,所以任何评论对我来说都很有帮助。

1 个回答

0

你正在循环读取一个文件,并把每一行当作JSON格式的数据来加载。有些JSON对象的place设置为一个字典,而另一些则设置为None

每当你加载了一行,其中place这个键的值是None时,就会出现AttributeError这个错误。

所以你需要先检查一下这个情况:

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

撰写回答