首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:列表索引必须是整数,而不是unicode (Telepot检索名称)

TypeError:列表索引必须是整数,而不是unicode (Telepot检索名称)
EN

Stack Overflow用户
提问于 2016-06-12 06:45:38
回答 2查看 3.6K关注 0票数 2

我试图制作一个机器人,它可以在一个组中检索聊天发送方的名称。我用Python和Telepot。

代码语言:javascript
复制
>>> from pprint import pprint
>>> import telepot
>>> response = bot.getUpdates()
pprint(response)
[{u'message': {u'chat': {u'first_name': u'Nick',
                         u'id': 999999999,
                         u'last_name': u'Lee',
                         u'type': u'private'},
           u'date': 1444723969,
           u'from': {u'first_name': u'Nick',
                     u'id': 999999999,
                     u'last_name': u'Lee'},
           u'message_id': 4015,
           u'text': u'Hello'},
u'update_id': 100000000}]

当我执行这个命令时,它会给我一个错误。

代码语言:javascript
复制
sender1 = response[u'message'][u'from'][u'first_name']
sender2 = response[u'message'][u'from'][u'last_name']

错误:

代码语言:javascript
复制
TypeError: list indices must be integers, not unicode

我该怎么解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-12 06:56:38

使用get()而不是列表访问字典中的值。此方法返回字典中给定键的值(如果密钥不可用,则返回None ):

代码语言:javascript
复制
sender1 = response[0][u'message'][u'from'].get(u'first_name')
sender2 = response[0][u'message'][u'from'].get(u'last_name')

# output:
# >>> print sender1
# u'Nick'
# >>> print sender2
# u'Lee'
票数 0
EN

Stack Overflow用户

发布于 2016-06-12 06:48:51

表示中的方括号意味着您有一个列表,并且列表必须使用整数或切片进行索引。在尝试访问任何包含的字典之前,请尝试使用[0]进行索引。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37771482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档