Python如何移除多余列表字典符号,以slug为键重组JSON数据
解决方案
问题原因
原代码中将artworks定义为列表类型,每次循环都生成仅包含单个键值对的字典追加到列表中,因此会得到外层为列表、每个键值对独立包裹为字典的错误结构。
代码修改
你只需要调整artist_artworks方法的容器类型和赋值逻辑即可:
def artist_artworks(self, artist_id): artist = self.artist(artist_id) # 初始化空字典存储结果,而非列表 artworks = {} with ThreadPool(self.threads) as pool: for artwork in pool.imap(self.artwork, artist["projects"]): # 直接以slug为键,artwork整体为值存入字典 artworks[artwork["slug"]] = artwork return artworks
如果需要输出的JSON格式更易读,可以优化save_artists_json方法,增加缩进和非ASCII字符支持:
def save_artists_json(self, artist): result = self.save_artist(artist) # indent参数控制缩进宽度,ensure_ascii=False避免特殊字符被转义为Unicode编码 json_formatted_str = json.dumps(result, indent=2, ensure_ascii=False) return json_formatted_str
内容的提问来源于stack exchange,提问作者avgilles
相关产品推荐
相关产品推荐

