Python读取文件构造字典时如何避免值为元组或列表形式
Python读取文件构造字典时值不生成元组的实现方法
问题背景
使用Python读取文件内容构造字典时,不希望存入字典的值呈现元组或列表形式。
原有实现代码如下:
def read(fname): data=dict() with open(fname,'r') as file: for line in file: r = line.strip().split(',') print(r) data[r[0]]=r[1],r[2],r[3],r[4],r[5] print(data) return data
上述代码运行后生成的字典格式为{key:(1,2,3,4)},期望得到值为逗号分隔内容、无元组括号包裹的字典格式。
问题原因
Python语法中,多个值用逗号分隔直接赋值给单个变量时,会自动将这些值打包为元组类型,因此data[r[0]]=r[1],r[2],r[3],r[4],r[5]这行代码实际是把5个元素打包成元组后作为字典值存储。
修改方案
直接将需要存储的多段内容拼接为逗号分隔的字符串再赋值即可,不会生成元组或列表结构。修改后的代码如下:
def read(fname): data = dict() with open(fname, 'r') as file: for line in file: r = line.strip().split(',') print(r) # 切片取对应位置元素,拼接为逗号分隔的字符串 data[r[0]] = ','.join(r[1:6]) print(data) return data
补充说明
r[1:6]是切片写法,会取列表r中索引为1、2、3、4、5的元素,和手动逐个写r[1],r[2],r[3],r[4],r[5]取到的内容完全一致,写法更简洁- 如果每行按逗号分割后的字段长度固定,可直接使用
','.join(r[1:])取索引1之后的所有元素拼接,不需要手动指定切片结束位置,适配性更强 - 运行后字典对应的值就是普通的逗号分隔字符串,不会出现元组的括号包裹格式。
内容的提问来源于stack exchange,提问作者cade232
相关产品推荐
相关产品推荐

