这种字典,在不知道有多少个 value 的情况下,怎么取到其值?

2018-08-07 11:22:47 +08:00
 wsds
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
3059 次点击
所在节点    Python
23 条回复
WO31400
2018-08-07 15:37:26 +08:00
使用 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']
PulpFunction
2018-08-07 16:55:16 +08:00
明显爬虫入门选手 哈哈 有个官方的 json dumps 里面有个自造的转换函数的参数,留下有用的 去掉没用的
wlsnx
2018-08-07 18:00:34 +08:00
[x["id"] for x in b["data"]]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/477538

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX