Python中如何动态获取未知数量键值对字典的所有值?
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
Python中如何动态获取未知数量键值对字典的所有值?
dict.keys()
# 方法1:直接使用values()方法
my_dict = {'a': 1, 'b': 2, 'c': 3}
all_values = list(my_dict.values())
print(all_values) # 输出: [1, 2, 3]
# 方法2:使用列表推导式
all_values = [value for value in my_dict.values()]
print(all_values) # 输出: [1, 2, 3]
# 方法3:遍历字典获取值
all_values = []
for key in my_dict:
all_values.append(my_dict[key])
print(all_values) # 输出: [1, 2, 3]
# 方法4:处理嵌套字典的情况
nested_dict = {'a': {'x': 1}, 'b': {'y': 2}}
all_values = []
for inner_dict in nested_dict.values():
if isinstance(inner_dict, dict):
all_values.extend(inner_dict.values())
print(all_values) # 输出: [1, 2]
最推荐直接用dict.values(),简单高效。
这个输出是
dict_keys([‘data’, ‘total’])
dict.values()输出了
dict_values([[{‘id’: ‘1’}, {‘id’: ‘2’}, {‘id’: ‘3’}], 0])
但这个类型好奇怪,怎么再拿到 id
len(b[“data”]) 了解下
可以直接
for i in b[“data”]:
id_ = i[“id”]
[item[“id”] for item in b[“data”] ]
<br>>>> for i in b['data']:<br>... print(i['id'])<br>...<br>1<br>2<br>3<br>
这样有什么问题吗? 另外"total"是不是对应 id 的数量?
len(b[‘data’])
,多谢
不错,学习了,确实可以python<br>b = {<br> "data": [{<br> "id": "1"<br> }, {<br> "id": "2"<br> }, {<br> "id": "3"<br> }],<br> "total": 0<br>}<br><br>for i in b["data"]:<br> print(i["id"])<br>
for dd in b[‘data’]:
print(dd.get(‘id’))
data 里边不是数组吗?难道 python 不能对数据做循环?
好强,列表生成器,感谢啊
问题是 id 不知道有多少个,不知道 len
#12 你数据都有了,直接用 len()函数,为啥会不知道有多少个 ID
数组都给你了,怎么可能会不知道数组长度
一个 map 就行了啊
map(lambda x: x[‘id’], b[‘data’])
哦哦,对对,搞懵逼了,现在明白了,谢谢
多谢,lambda 这个函数很少使用,学习了
map reduce filter zip enumerate lambda sort collections 这些关键字 /函数 /库 在处理这类问题时很有用 可以看下
多谢提醒,我学习一下
列表推导式?
id_lst = [item[‘id’] for item in b[‘data’]]
使用 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’]
明显爬虫入门选手 哈哈 有个官方的 json dumps 里面有个自造的转换函数的参数,留下有用的 去掉没用的
[x[“id”] for x in b[“data”]]

