user999 发表于 2022-6-10 11:14

求助,关于使用循环遍历字典取值的问题-感谢热心坛友回答。谢谢各位的帮助

本帖最后由 user999 于 2022-6-10 11:45 编辑

各位大佬,小伙伴,我又来提问了。{:301_1001:}

https://static.52pojie.cn/static/image/hrline/1.gif


现在我遇到一个问题,我是使用json格式,接收的数据。然后,我使用的是一次循环读取我需要的数据,然后从新组合一份数据。
这个网站,在性别这一块,如果说选择的是保密,那么直接gender = userDict['gender']# 性别 这个KEY都没了。不是KEY=NULL 这种设置。

      for img in img_Dict:
            # time.sleep(1)
            imgNum += 1
            title = re.sub('[/:*?"<>|.]', '_', img['title'])# 作品名称
            comment_count = img['comment_count']# 作品评论
            view_count = img['view_count']# 作品浏览数
            like_count = img['like_count']# 作品点赞
            gender= img['gender']# 作者性别
            large = img['image']['large']# 作品链接
            name = img['user']['name']# 作者名

如上,我现在只会这一种取值方式。如果出现上面循环内,任意一个KEY不存在,那我这个循环直接就报错了。
我希望这一次循环,取值的时候,其中某个KEY不见了,直接往下遍历后面的KEY,而不是直接跳出这个循环,进入新的循环,应该怎么处理呀?

cdsgg 发表于 2022-6-10 11:24

实在不行用jsonpath一般如果没有这个键的话 就直接返回false 判断一下就可以了

cdsgg 发表于 2022-6-10 11:25

或者用try一下   try:
except:

ZGA101421 发表于 2022-6-10 11:26

try catch finally

小航 发表于 2022-6-10 11:28

直接使用.get('键名')

cdsgg 发表于 2022-6-10 11:28

a={"1":2}

print(a.get("1"))
print(a.get("2"))

2
None



你懂我意思吧

user999 发表于 2022-6-10 11:34

cdsgg 发表于 2022-6-10 11:28
a={"1":2}

print(a.get("1"))


啊。大佬,你提醒的好。我记得看教程的时候,提到过取字典值的时候,一个是我这种,一个是GET。
因为我这个最后要输出到一个表里。

是不是按照你教我的办法,a有对应的key,返回value,如果没有对应的key,a返回的是none.
a一定是有个值的是嘛{:301_977:}

cdsgg 发表于 2022-6-10 11:38

user999 发表于 2022-6-10 11:34
啊。大佬,你提醒的好。我记得看教程的时候,提到过取字典值的时候,一个是我这种,一个是GET。
因为我 ...

假如没有这个键的话 返回的None判断是None就进行下一个行为就可以了

user999 发表于 2022-6-10 11:41

cdsgg 发表于 2022-6-10 11:38
假如没有这个键的话 返回的None判断是None就进行下一个行为就可以了

我去好好看看字典这一块的教程。理解你说的意思了。但是我基本功不好。谢谢回答。非常感谢。

wihn 发表于 2022-6-10 14:01

dict.get(key, default)用两个参数,如果key有对应的,就返回对应的value;如果没有这个key,就返回传入的default参数。
页: [1] 2
查看完整版本: 求助,关于使用循环遍历字典取值的问题-感谢热心坛友回答。谢谢各位的帮助