Python 将带有列表的词典打印到文件中

Python 将带有列表的词典打印到文件中,python,list,dictionary,Python,List,Dictionary,我用python编写了一个脚本,从一些文件中提取一些信息并将其传递到另一个文件中 我有两个字典,其中包含一个类的元素列表,我想将列表中的每个元素写入一个.csv文件 当我试图将数据写入文件时,它以一种奇怪的方式出现。我希望数据以以下方式显示: Sample_3 45526536 7010285 31195850 7320401 45500691 7186449 31021951 7292291 Sample_1 48885783 7715654 33474067 7696062 488579

我用python编写了一个脚本,从一些文件中提取一些信息并将其传递到另一个文件中

我有两个字典,其中包含一个类的元素列表,我想将列表中的每个元素写入一个.csv文件

当我试图将数据写入文件时,它以一种奇怪的方式出现。我希望数据以以下方式显示:

Sample_3 45526536 7010285 31195850 7320401 45500691 7186449 31021951 7292291  
Sample_1 48885783 7715654 33474067 7696062 48857972 7907873 33282945 7667154
但我得到的结果是:

 Sample_3 ['45526536'] ['7010285'] ['31195850'] ['7320401'] ['45500691'] ['7186449'] ['31021951'] ['7292291']
 Sample_1 ['48885783'] ['7715654'] ['33474067'] ['7696062'] ['48857972'] ['7907873'] ['33282945']['7667154']
有人知道为什么要在数字中添加[''')吗?我试着用一种非常简单的方法来消除[''],但是我不会在文件中打印任何内容

def correct_str(value):  
    new= str(value).strip("['")
    final= str(new).strip("']")
    return final
这是我向字典添加元素的代码,字典是一个名为stat_dict_l_的全局变量,名称是字典的键,在本例中是Sample_1和Sample_2,列表值是一个包含我从文件中获取的数字的列表。我相信我的问题可能来自我在字典中添加值的方式

def processNumbersLeft(name,list_values):

    list_reads=[]


    for value in list_values:
        print value.total_reads
        list_reads.append(value.total_reads)



    list_aligned_once=[]
    for value in list_values:

        n=re.split(" ",value.aligned_once)
                 list_aligned_once.append(n[0])


    list_failed=[]
    for value in list_values:

        n=re.split(" ",value.failed)
        list_failed.append(n[0])

    list_aligned_several=[]
    for value in list_values:

        n=re.split(" ",value.aligned_several)

        list_aligned_several.append(n[0])



    stat_elem=Statistics(list_reads,list_aligned_once,list_failed,list_aligned_several)

    stat_dict_l_u[name]=stat_elem

谢谢大家!

将数据写入文件时,会将对象转换为字符串。
[“”]
符号表示您的数据包含在列表中

您希望为每个条目写入
value[0]
,而不是
value

举例说明:

>>> value = ['foobar']
>>> value
['foobar']
>>> str(value)
"['foobar']"
>>> value[0]
'foobar'
尝试使用此案例:

def to_file(d):
    return '\n'.join("%s %s" % (key, ' '.join(map(str, values))) for key, values in d.items())
使用:

>>> print to_file({'Sample_1': [1,2,3], 'Sample_2': [4,5,6]})
Sample_1 1 2 3
Sample_2 4 5 6
注意,如果您需要大量使用csv文件,请使用有用的模块。使用的示例:

import csv
with open('eggs.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ', quoting=csv.QUOTE_MINIMAL)
    for key, values in d.items():
        spamwriter.writerow([key] + values)

这个例子正是您需要的。欲了解更多信息,请阅读。

能否向我们展示用于获得错误结果的代码?请打印词典的
repr(d)
。当我使用repr(d)时,我得到了以下结果:{'Sample_3':,'Sample_1':}解决了这一问题的方法是在代码中,我将值添加到词典中。解决方案:stat_elem=Statistics(list_读取[0],list_对齐[0],list_失败[0],list_对齐[0],list_对齐[0])那么OP如何为每个元素生成单独的列表呢?要么他的数据看起来像
[['one'],['two'],['three'],…]
,要么他使用切片而不是索引(
lst[0:0]
list[1:1]
,等等)。@MartijnPieters,无论如何,我们都不是读心术者,没有代码就无法准确地确定到底是什么问题。@defuz我试过你的代码,但没有帮助,它给出了一个错误:writer.writerow([key]+value)TypeError:只能将列表(而不是“实例”)连接到列表。不管怎样,我需要把两本字典中的元素写到我的字典里file@Leo.peis,问题不在代码中值是一些对象,而不是
列表
。应该是:
d={“示例1”:[1,2,3],“Sapmle2”:[4,5,6]}
。在这里打印你的
d
。答案很好。只是用这个来解决一个相关的问题。不过,要是能更容易找到就好了