Python字典遍历生成指定格式输出问题求助
问题描述
我有一个字典,键是分类名称,值是对应分类的条目列表,示例如下:
d = {"category_a": ["item_a", "item_b", "item_c"], "category_b": ["item_d", "item_e"]}
我希望遍历字典后得到如下格式的输出:
category_a · item_a · item_b · item_c category_b · item_d · item_e
但实际得到的输出是:
category_a · item_a · item_b · item_c · item_d · item_e category_b · item_a · item_b · item_c · item_d · item_e
我知道问题出在代码会遍历所有键的所有条目,尝试修改内层循环只获取当前键的对应值但没成功,要么拿到整个条目列表,要么报错。需要把结果存入字符串,用于PySimpleGUI的Multiline组件。我的基础代码结构如下:
def display(): d = {"category_a": ["item_a", "item_b", "item_c"], "category_b": ["item_d", "item_e"]} output = "" for k in d.keys(): output += k + "\n" for key, val in d.items(): for v in val: output += " · " + v + "\n" return output
解决方法
原代码的问题在于内层for key, val in d.items()循环遍历了整个字典的所有键值对,导致每个分类下都打印了所有条目。只需要直接获取当前键对应的条目列表,再遍历这个列表即可:
修改后的代码:
def display(): d = {"category_a": ["item_a", "item_b", "item_c"], "category_b": ["item_d", "item_e"]} output = "" for k in d.keys(): output += k + "\n" # 直接获取当前分类对应的条目列表并遍历 for v in d[k]: output += " · " + v + "\n" return output
或者更简洁的写法,直接遍历字典的键值对,省去单独取键的步骤:
def display(): d = {"category_a": ["item_a", "item_b", "item_c"], "category_b": ["item_d", "item_e"]} output = "" for category, items in d.items(): output += category + "\n" for item in items: output += " · " + item + "\n" return output
这样就能得到期望的格式,每个分类下只打印对应自己的条目,最后返回的字符串可以直接用于PySimpleGUI的Multiline组件。
内容的提问来源于stack exchange,提问作者Opossumfarm
相关产品推荐
相关产品推荐

