如何在Python中将字典值转为字符串后扩展已有列表?
问题:将字典的值转为字符串后扩展已有列表
现有Python代码:
x = [ 'h1', 'h2' ] y = [ 'h3', 'h4' ] dict_sample = {'xyz': ['ab', 'bc'], 'mno': ['cd', 'de']}
执行x.extend(dict_sample.keys())后得到输出:['h1', 'h2', 'xyz', 'mno'];
执行y.extend(dict_sample.values())后得到输出:['h3', 'h4', ['ab', 'bc'], ['cd', 'de']]。
需要实现的是让y扩展后得到目标输出:['h3', 'h4', "['ab', 'bc']", "['cd', 'de']"](注:目标输出中用双引号包裹字符串以避免语法冲突,实际效果为列表元素是字符串形式的子列表)
解决方法
方法1:列表推导式转换每个值为字符串
遍历字典的values(),将每个子列表转为字符串后扩展y:
y.extend(str(val) for val in dict_sample.values())
执行后y的结果:
['h3', 'h4', "['ab', 'bc']", "['cd', 'de']"]
方法2:使用map()函数批量转换
通过map()将str函数应用到所有值上,直接传入extend():
y.extend(map(str, dict_sample.values()))
效果与方法1完全一致,写法更简洁。
方法3:自定义字符串格式(可选)
如果需要定制字符串样式(比如调整引号类型),可以用repr()或手动格式化:
# 使用repr()生成Python语法一致的字符串 y.extend(repr(val) for val in dict_sample.values()) # 手动格式化(示例:自定义引号和分隔符) y.extend(f"[{', '.join(f'{repr(item)}' for item in val)}]" for val in dict_sample.values())
repr()的输出与str()在本场景下相同,但对于其他数据类型可能有差异;手动格式化则可完全自定义输出样式。
内容的提问来源于stack exchange,提问作者Neel
相关产品推荐
相关产品推荐

