如何将字典中的列表元素写入制表符分隔文件?
解决字典列表写入制表符分隔文件的问题
看起来你是把字典的遍历对象搞错啦!让我来帮你捋清楚问题出在哪,以及怎么解决~
首先说核心问题:你代码里的nested_list大概率没有正确指向字典里的列表集合。如果直接遍历字典本身(比如把dict_with_lists赋值给了nested_list),Python会迭代字典的键;要是你的键是字符串类型,'\t'.join(i)就会把字符串的每个字符用制表符拆开——这就是为什么你看到不仅分隔单词,还分隔字符的原因。
正确的解决方案
我们需要遍历字典的values()方法返回的列表集合,也就是每个键对应的单词列表,然后对每个列表执行制表符连接操作:
基础写法(逐行写入)
# 先定义你的示例字典 dict_with_lists = { 'value1': ['word1', 'word2', 'word3', 'word4'], 'value2': ['word1', 'word2', 'word3'] } with open('output.tsv', 'w') as file: # 遍历字典中所有的单词列表 for word_list in dict_with_lists.values(): # 用制表符连接列表元素,添加换行符后写入文件 file.write('\t'.join(word_list) + '\n')
用writelines的简化写法
如果你更喜欢用生成器表达式结合writelines,只需要把遍历对象改成dict_with_lists.values()即可:
with open('output.tsv', 'w') as file: file.writelines('\t'.join(word_list) + '\n' for word_list in dict_with_lists.values())
可选:保留字典键的信息
如果需要把键也写入每行(比如作为第一列),可以遍历字典的items()同时获取键和列表:
with open('output_with_keys.tsv', 'w') as file: for key, word_list in dict_with_lists.items(): # 先写键,再写制表符分隔的列表内容 line = f"{key}\t" + '\t'.join(word_list) + '\n' file.write(line)
这样生成的文件就会是标准的制表符分隔格式,每个列表内容单独占一行啦!
内容的提问来源于stack exchange,提问作者Anastasia
相关产品推荐
相关产品推荐

