访问格式为字典Python的列表中的信息

时间:2014-04-22 21:36:33

标签: python list python-3.x twitter dictionary

Twitter API为这样的实体吐出列表:

[{'expanded_url': 'http://twitter.com/voxdotcom/status/458708072131592194/photo/1', 'display_url': 'pic.twitter.com/uc3j0nU8uf', 'url': 'http://t.co/uc3j0nU8uf', 'media_url_https': 'https://pbs.twimg.com/media/Bl2oj5_CYAAO72v.png', 'id_str': '458708071875764224', 'sizes': {'small': {'h': 256, 'resize': 'fit', 'w': 340}, 'large': {'h': 773, 'resize': 'fit', 'w': 1023}, 'medium': {'h': 453, 'resize': 'fit', 'w': 599}, 'thumb': {'h': 150, 'resize': 'crop', 'w': 150}}, 'indices': [88, 110], 'type': 'photo', 'id': 458708071875764224, 'media_url': 'http://pbs.twimg.com/media/Bl2oj5_CYAAO72v.png'}]

它看起来像一本字典,但它实际上是一个列表。精氨酸。

如何访问特定条目?例如,如果我想要expanded_url值,获得它的最佳方法是什么?

感谢。

*感谢您的快速回复。

3 个答案:

答案 0 :(得分:2)

将位置0的列表编入索引以获取字典:

>>> lst = [{'expanded_url': 'http://twitter.com/voxdotcom/status/458708072131592194/photo/1', 'display_url': 'pic.twitter.com/uc3j0nU8uf', 'url': 'http://t.co/uc3j0nU8uf', 'media_url_https': 'https://pbs.twimg.com/media/Bl2oj5_CYAAO72v.png', 'id_str': '458708071875764224', 'sizes': {'small': {'h': 256, 'resize': 'fit', 'w': 340}, 'large': {'h': 773, 'resize': 'fit', 'w': 1023}, 'medium': {'h': 453, 'resize': 'fit', 'w': 599}, 'thumb': {'h': 150, 'resize': 'crop', 'w': 150}}, 'indices': [88, 110], 'type': 'photo', 'id': 458708071875764224, 'media_url': 'http://pbs.twimg.com/media/Bl2oj5_CYAAO72v.png'}]
>>> lst[0]["expanded_url"]
'http://twitter.com/voxdotcom/status/458708072131592194/photo/1'
>>>

答案 1 :(得分:1)

你得到的是list里面有一个字典项目。通过0索引获取字典:

>>> data = [{'expanded_url': 'http://twitter.com/voxdotcom/status/458708072131592194/photo/1', 'display_url': 'pic.twitter.com/uc3j0nU8uf', 'url': 'http://t.co/uc3j0nU8uf', 'media_url_https': 'https://pbs.twimg.com/media/Bl2oj5_CYAAO72v.png', 'id_str': '458708071875764224', 'sizes': {'small': {'h': 256, 'resize': 'fit', 'w': 340}, 'large': {'h': 773, 'resize': 'fit', 'w': 1023}, 'medium': {'h': 453, 'resize': 'fit', 'w': 599}, 'thumb': {'h': 150, 'resize': 'crop', 'w': 150}}, 'indices': [88, 110], 'type': 'photo', 'id': 458708071875764224, 'media_url': 'http://pbs.twimg.com/media/Bl2oj5_CYAAO72v.png'}]
>>> type(data)
<type 'list'>
>>> type(data[0])
<type 'dict'>
>>> data[0]['expanded_url']
'http://twitter.com/voxdotcom/status/458708072131592194/photo/1'

作为旁注,使用pprint进行漂亮打印有助于查看数据结构包含的内容:

>>> from pprint import pprint
>>> pprint(data)
[{'display_url': 'pic.twitter.com/uc3j0nU8uf',
  'expanded_url': 'http://twitter.com/voxdotcom/status/458708072131592194/photo/1',
  'id': 458708071875764224,
  'id_str': '458708071875764224',
  'indices': [88, 110],
  'media_url': 'http://pbs.twimg.com/media/Bl2oj5_CYAAO72v.png',
  'media_url_https': 'https://pbs.twimg.com/media/Bl2oj5_CYAAO72v.png',
  'sizes': {'large': {'h': 773, 'resize': 'fit', 'w': 1023},
            'medium': {'h': 453, 'resize': 'fit', 'w': 599},
            'small': {'h': 256, 'resize': 'fit', 'w': 340},
            'thumb': {'h': 150, 'resize': 'crop', 'w': 150}},
  'type': 'photo',
  'url': 'http://t.co/uc3j0nU8uf'}]

答案 2 :(得分:1)

看起来你得到的是JSON解析为python对象。仔细观察 - 你所拥有的是一个只包含一个元素的列表。

>>> len([{'expanded_url': 'http://twitter.com/voxdotcom/status/458708072131592194/photo/1', 'display_url': 'pic.twitter.com/uc3j0nU8uf', 'url': 'http://t.co/uc3j0nU8uf', 'media_url_https': 'https://pbs.twimg.com/media/Bl2oj5_CYAAO72v.png', 'id_str': '458708071875764224', 'sizes': {'small': {'h': 256, 'resize': 'fit', 'w': 340}, 'large': {'h': 773, 'resize': 'fit', 'w': 1023}, 'medium': {'h': 453, 'resize': 'fit', 'w': 599}, 'thumb': {'h': 150, 'resize': 'crop', 'w': 150}}, 'indices': [88, 110], 'type': 'photo', 'id': 458708071875764224, 'media_url': 'http://pbs.twimg.com/media/Bl2oj5_CYAAO72v.png'}])
1

所以你需要做的就是取出第一个元素,这就是你想要的东西。如果您正在调用此内容my_data,那么您需要my_data[0]。这将是字典,您可以像往常一样访问其中的元素。