写入键:值对到带有变量值的制表符分隔文件

2024-06-17 19:11:27 发布

您现在位置:Python中文网/ 问答频道 /正文

初学者问题: 我有一本字典,里面的值是字符串的列表(一个变量)。最后,我想将每个字典条目写入一个以制表符分隔的行,其中键为列1,值列表中的各个项为列2-n。我使用了以下代码生成了一个输出文件,其中键为列1,值列表为列2,但我不确定如何从中继续。

mydict = {'spider':['kate', 'susan'],
          'fish':['kate'],
          'dog':['andy'], 
          'cat':['andy','colby','jeff']} 
f = open('outfile.txt', 'w') 
writer = csv.writer(f, delimiter = '\t')
for key, value in orfdict.iteritems():
    writer.writerow([orf] + [value])

python文档建议您可以使用zip()创建一个list form key:value对,但是当我在交互提示下尝试时:

>>> for key,value in mydict.iteritems():
...     mypair = zip(key,value)
...     print mypair

我得到了这个奇怪的输出,所以我显然不明白:

[('f', 'kate')]
[('c', 'andy'), ('a', 'colby'), ('t', 'jeff')]
[('s', 'kate'), ('p', 'susan')]
[('d', 'andy')]

最简单的方法是为字典上的每个迭代创建一个空列表,然后首先将键附加到该列表,然后使用缩进for循环将每个值附加到该列表?我觉得我一定错过了什么。


Tags: keyin列表for字典valuezipmydict
3条回答

看起来您重命名了一些变量,而没有重命名其他变量,我假设您的示例代码的意思是:

mydict = {'spider':['kate', 'susan'],
          'fish':['kate'],
          'dog':['andy'], 
          'cat':['andy','colby','jeff']} 
f = open('outfile.txt', 'w') 
writer = csv.writer(f, delimiter = '\t')
for key, value in mydict.iteritems():
    writer.writerow([key] + [value])

csv writer在这种情况下似乎没有必要,为什么不使用:

mydict = {'spider':['kate', 'susan'],
          'fish':['kate'],
          'dog':['andy'],
          'cat':['andy','colby','jeff']}
f = open('outfile.txt', 'w')
for key, value in mydict.iteritems():
    f.write('%s\t%s\n' % (key,'\t'.join(value)))
f.close()

尝试将for循环更改为以下内容:

for key, value in orfdict.iteritems():
    writer.writerow([key] + value)

因为orfdict中的值是列表,所以在每次迭代中value都是列表。例如在第一次迭代中key可以是'spider',而value将是['kate', 'susan'],因此[key] + value将变成['spider'] + ['kate', 'susan']['spider', 'kate', 'susan']

尝试将单个值添加到现有列表:

writer.writerow([key] + value)

key是一个值,value已经是一个列表)

相关问题 更多 >