根据python中的另一个键值从字典(或json)中获取值

2024-09-29 03:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本很大的嵌套字典。充满嵌套列表和字典的随机级别

在深处的某个地方有一本字典:

{name:'jasdhsajkd',id:'23214rfrw4523rfew'}

我想做的是在所有键中搜索上面id的值,但得到name的值

以下是字典的json代码:

code

{"categories": [{"child_filter_groups": [{"icon_url": "https://main.cdn.wish.com/web/000e72f28bfa/img/filtered_feed/filter_feed_filter_color.png", "id": "Color", "filters": [{"child_filter_groups": [], "filter_id": "color_54089f882ee345121dfdddce", "name": "Bronze", "origin_name": "Bronze"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e0734", "name": "Black", "origin_name": "Black"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e0735", "name": "Blue", "origin_name": "Blue"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e0736", "name": "Clear", "origin_name": "Clear"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e0737", "name": "Gold", "origin_name": "Gold"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e0738", "name": "Gray", "origin_name": "Gray"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e0739", "name": "Green", "origin_name": "Green"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e073a", "name": "Multi-Color", "origin_name": "Multi-Color"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e073b", "name": "Orange", "origin_name": "Orange"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e073c", "name": "Pink", "origin_name": "Pink"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e073d", "name": "Red", "origin_name": "Red"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e073e", "name": "Silver", "origin_name": "Silver"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e0740", "name": "White", "origin_name": "White"}, {"child_filter_groups": [], "filter_id": "color_53dc217e21a8632b3c6e0741", "name": "Yellow", "origin_name": "Yellow"}, {"child_filter_groups": [], "filter_id": "color_53dc237a21a863307923e697", "name": "Brown", "origin_name": "Brown"}, {"child_filter_groups": [], "filter_id": "color_53dc36c521a86346c126eaf1", "name": "Purple", "origin_name": "Purple"}, {"child_filter_groups": [], "filter_id": "color_54889a49f8a0b3363e0ba1ef", "name": "Beige", "origin_name": "Beige"}], "name": "Color"}, {"icon_url": "https://main.cdn.wish.com/web/000e72f28bfa/img/filtered_feed/filter_feed_filter_rating.png", "name": "Rating", "is_exclusive": true, "filters": [{"child_filter_groups": [], "filter_id": "rating_4", "name": "\u2605\u2605\u2605\u2605 & up", "origin_name": null}, {"child_filter_groups": [], "filter_id": "rating_3", "name": "\u2605\u2605\u2605 & up", "origin_name": null}, {"child_filter_groups": [], "filter_id": "rating_2", "name": "\u2605\u2605 & up", "origin_name": null}, {"child_filter_groups": [], "filter_id": "rating_1", "name": "\u2605 & up", "origin_name": null}], "id": "Rating"}], "name": "Popular", "filter_id": "tabbed_feed_latest"}, {"wish_express_banner_info": "Get your Delivery by 18 Oct!", "name": null, "filter_id": "express__tab"}, {"red_dot_badge": true, "name": "Pickup", "filter_id": "pickup__tab"}, {"name": "Recently Viewed", "filter_id": "recently_viewed__tab"}, {"child_filter_groups": [], "red_dot_badge": true, "name": "Blitz Buy", "filter_id": "deal_dash__tab"}, {"child_filter_groups": [{"icon_url": ......................

Tags: nameidchild字典feedoriginfiltertab
1条回答
网友
1楼 · 发布于 2024-09-29 03:31:10

下面是基于字符串的,可能有更好的解决方案可以基于dict,但它可以完成这项工作。注释中的解释:

s=str(your_dict) #turns your dict to a string
k=[eval('{'+i.split('}')[0]+'}') for i in s.split('{') if i.startswith("'name'")] #searches for string parts that start with 'name' and save all the part as dictionary
[i['name'] for i in k if i['id']=='23214rfrw4523rfew'][0] #searches for the dictionary than has ht edesired id and returns the name

代码需要一些考虑,因为它是在严格的规则下工作的。例如,“name”必须是子字典和简单引号中的第一个键。如果是双引号,那么i.startswith("'name'")必须替换为i.startswith('"name"') 如果你能提供完整的输入,我可以检查它是否有效,如果无效,我可以调整代码

相关问题 更多 >