Python如何使用推导式生成指定结构嵌套字典并展示多值
实现目标
基于输入的字符串列表,使用推导式生成嵌套字典,规则如下:
- 以列表中每个字符串作为外层字典的key
- 每个key对应一个内层字典,固定包含
UPPER、lower两个key - 遍历字符串的每个字符,跳过空格等非字母字符:大写字母存入
UPPER对应的列表,小写字母存入lower对应的列表
测试输入
given_list = ['iCLA', 'YGU', 'icla YGU', 'Hello World', 'Python']
预期输出
{'iCLA': {'UPPER': ['C', 'L', 'A'], 'lower': ['i']}, 'YGU': {'UPPER': ['Y', 'G', 'U'], 'lower': []}, 'icla YGU': {'UPPER': ['Y', 'G', 'U'], 'lower': ['i', 'c', 'l', 'a']}, 'Hello World': {'UPPER': ['H', 'W'], 'lower': ['e', 'l', 'l', 'o', 'o', 'r', 'l', 'd']}, 'Python': {'UPPER': ['P'], 'lower': ['y', 't', 'h', 'o', 'n']}}
正确实现代码
直接嵌套字典+列表推导式即可完成,不需要额外写复杂的条件分支循环:
given_list = ['iCLA', 'YGU', 'icla YGU', 'Hello World', 'Python'] result = { # 外层遍历列表每个字符串作为key s: { # 内层筛选当前字符串里所有大写字母,自动跳过非大写的其他字符 'UPPER': [char for char in s if char.isupper()], # 筛选当前字符串里所有小写字母,自动跳过非小写的其他字符(包含空格、符号) 'lower': [char for char in s if char.islower()] } for s in given_list } # 打印验证结果 print(result)
常见出错点
之前实现达不到预期通常是两个原因:
- 没有过滤非字母字符,导致空格、符号被误加入列表
- 嵌套结构层级写错,没有把每个字符串对应的两个分类列表放到对应内层字典下
运行上述代码可以直接得到和预期完全一致的输出。
内容的提问来源于stack exchange,提问作者Hamse Ibrahim
相关产品推荐
相关产品推荐

