【问题标题】:Accessing the latter elements of a python list with several duplicated elements使用多个重复元素访问 python 列表的后面元素
【发布时间】:2017-03-24 22:59:55
【问题描述】:

获取虚构列表 A 并给出此关键字进行扫描(id、messageid、名字、类型、文本)并给出以下项目(列表中以粗体标记的那些)是相关的,而其他则不相关。 A =

['ok', 'true', 'result', 'updateid', '230999144', 'message', 'messageid', '26', 'from', 'id', '250313842', 'firstname ', 'John', 'lastname', 'Doe', 'chat', 'id', '250313842', 'firstname', 'John', 'lastname', 'Doe', 'type', 'private', 'date', '2490213676', 'text', '/start', 'entities', 'type', 'botcommand', 'offset', '0', 'length', '6', 'updateid', ' 230999145', 'message', 'messageid', '27', 'from', 'id', '250313842' , 'firstname', 'John', 'lastname', 'Doe', 'chat', 'id', '250313842', 'firstname', 'John' , '姓氏', 'Doe', 'type', 'private', ' date', '2490213690', 'text', 'Damn', 'it', 'feels' , 'good', 'to', 'be', 'a', 'gangsta ']

我们可以看到这个列表中有很多冗余,但事实是这种重复可能发生 N 次,而不仅仅是本例中的两次。后面的结果总是与“扫描”相关的结果。如何最好地访问它们?我不想使用多个“索引”以使代码尽可能高效。

请记住,所需的输出是这样的: messageid: 27 userid: 250313842 username: John Doe usertext: "Damn it feels good to be a gangsta"

有问题的列表来自聊天机器人的 https 推送门,它作为文本字符串推送,其原始形式为:

{
  "result": [
    {
      "update_id": 230999144,
      "message": {
        "from": {
          "id": 250313842,
          "first_name": "John",
          "last_name": "Doe"
        },
        "entities": [
          {
            "length": 6,
            "type": "bot_command",
            "offset": 0
          }
        ],
        "text": "/start",
        "date": 2490213676,
        "message_id": 26,
        "chat": {
          "id": 250313842,
          "type": "private",
          "first_name": "John",
          "last_name": "Doe"
        }
      }
    },
    {
      "update_id": 230999145,
      "message": {
        "date": 2490213690,
        "chat": {
          "id": 250313842,
          "type": "private",
          "first_name": "John",
          "last_name": "Doe"
        },
        "message_id": 27,
        "text": "Damn it feels good to be a gangsta",
        "from": {
          "id": 250313842,
          "first_name": "John",
          "last_name": "Doe"
        }
      }
    }
  ],
  "ok": true
}

提前感谢您帮助解决这个问题。

【问题讨论】:

  • 你能详细说明你想要的输出吗?
  • 我的直觉告诉我,你在得到这个列表之前所做的任何事情都可以做得更好,以获得更易于管理的数据结构。
  • 这看起来 JSON 是由醉汉解析器读取的。
  • 这是您不想删除的有用信息。能发一下原文吗?
  • 我拒绝接受这样的观念,即在任何合理的衡量标准下,这个字符串列表比解析的数据结构更易于管理。

标签: python string list chatbot


【解决方案1】:

由于原文是JSON,可以使用json解析成字典:

import json

data = json.loads(your_json_string)

...现在您可以像访问任何字典/数据结构一样访问所有数据。

>>> data["result"][-1]["message"]["text"]
u'Damn it feels good to be a gangsta'

【讨论】:

  • 我会使用data['result'][-1],因为这是 OP 要求的......它说明了使用这种数据结构比使用字符串列表简单得多......
猜你喜欢
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 2020-04-12
  • 2018-09-12
  • 1970-01-01
  • 2014-09-02
相关资源
最近更新 更多