
b = { "data": [{ "id": "1" }, { "id": "2" }, { "id": "3" }], #这里有 N 个 id,且 N 是个不确定的值 "total": 0 } 我想到的是 try 的形式,但感觉这是个很 low 的方法,有没有比较官方的,便捷的办法取到 id 的?求万能的 v 友推荐一下
num = -1 while(True): num += 1 try: id=b["data"][num]["id"] print(id) except IndexError: break 1 NaVient Aug 7, 2018 dict.keys() |
3 wsds OP |
4 Tyanboot PRO len(b["data"]) 了解下 可以直接 for i in b["data"]: id_ = i["id"] |
5 mkeith Aug 7, 2018 [item["id"] for item in b["data"] ] |
6 ik Aug 7, 2018 ``` >>> for i in b['data']: ... print(i['id']) ... 1 2 3 ``` 这样有什么问题吗? 另外`"total"`是不是对应 id 的数量? |
7 noqwerty Aug 7, 2018 via Android len(b['data']) |
8 wsds OP |
9 masha Aug 7, 2018 for dd in b['data']: print(dd.get('id')) |
10 qiayue PRO data 里边不是数组吗?难道 python 不能对数据做循环? |
13 jeremaihloo Aug 7, 2018 @wsds #12 你数据都有了,直接用 len()函数,为啥会不知道有多少个 ID |
14 qiayue PRO 数组都给你了,怎么可能会不知道数组长度 |
15 blodside Aug 7, 2018 一个 map 就行了啊 map(lambda x: x['id'], b['data']) |
16 wsds OP |
18 bravecarrot Aug 7, 2018 @wsds map reduce filter zip enumerate lambda sort collections 这些关键字 /函数 /库 在处理这类问题时很有用 可以看下 |
19 wsds OP @bravecarrot 多谢提醒,我学习一下 |
20 fjun3333 Aug 7, 2018 列表推导式? id_lst = [item['id'] for item in b['data']] |
21 WO31400 Aug 7, 2018 使用 jsonpath import jsonpath b = { "data": [{ "id": "1" }, { "id": "2" }, { "id": "3" }], # 这里有 N 个 id,且 N 是个不确定的值 "total": 0 } data = jsonpath.jsonpath(b,"$..id") print(data) data = ['1', '2', '3'] |
22 PulpFunction Aug 7, 2018 明显爬虫入门选手 哈哈 有个官方的 json dumps 里面有个自造的转换函数的参数,留下有用的 去掉没用的 |
23 wlsnx Aug 7, 2018 [x["id"] for x in b["data"]] |