【问题标题】:Accessing dictionary elements in python在python中访问字典元素
【发布时间】:2014-07-15 08:14:52
【问题描述】:

我处理一些 twitter 数据,我通过监视 twitter 流获取数据,然后将结果保存在 *.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”元素,如果我执行 print data["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'

我的 data["place"] 似乎没有被 Python 视为字典,这就是我的猜测,但我不确定,我对 Python 还很陌生,所以任何评论都会很有帮助对我来说。

【问题讨论】:

    标签: python json twitter dictionary


    【解决方案1】:

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

    只要您刚刚加载了一行,其中与place 键关联的值设置为None,您就会得到AttributeError 异常。

    您需要先对此进行测试:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      相关资源
      最近更新 更多