如果列是列表,如何将密钥存储在字典的csv文件中?

时间:2016-03-04 08:04:08

标签: python csv dictionary

这些输出存储在csv文件中:

$http

这是程序的输出。我得到了这个:

go:[u'forward', u'always', u'somewhere', u'very', u'now', u'somewhere', u'up']
incorrect:[u'little']
hide:[u'somewhere']
had:[u'little']
jiggle: [u'forward', u'little', u'little']

现在,当我想要检索值时,会产生问题。         例如,

for a in consolidated:
    print a, consolidated[a]
    writer2.writerow([a, consolidated[a]])

它没有给出键的值。如何检索键的每个值?

或者我该如何存储它:

for i in consolidated[a]:
     print i

2 个答案:

答案 0 :(得分:0)

假设您的字典d包含密钥goincorrecthad等,并且它们的值是列表,则可以将其写入文件:< / p>

s='' 
for k,v in d.items():
    s += "{},{}\n".format(k,','.join(v))
with open('myfile.txt','w') as f:
    f.write(s)

请注意,该键将对应于每行上的第一个字符串,例如。 go,forward,always,...\nincorrect,little等。

csv在每一行上应该具有相同数量的值/逗号,因此如果您想要保存到文件的可变长度列表,则可能不是您想要的。 然后检索数据,您可以执行以下操作:

d={}
with open('myfile.txt','r') as f:
    for line in f:
        words=line.split(',')
        d[words[0]] = words[1:]

如果您需要格式化为unicode,则可以使用codecs.open(file,'w','utf-8')之类的内容。

答案 1 :(得分:0)

好的,假设您有一个包含数组值的字典,并且希望以这种格式将它们存储为csv:"key", "val1,val2,val3" - 其中"是csv引用字符,,是除界。

这是您存储和阅读的方式。

import csv

options = {
    "delimiter" : ",",
    "quotechar" : "\"",
    "quoting"   : csv.QUOTE_MINIMAL
}

def create(dic, filename):
    data = []
    for key, values in dic.items():
        data.append([key, options['delimiter'].join(values)])

    with open(filename, 'wb') as csvfile:
        spamwriter = csv.writer(csvfile, **options)
        for line in data:
            spamwriter.writerow(line)

def readFile(filename, _unicode=False):
    data = {}
    with open(filename, 'rb') as csvfile:
        spamreader = csv.reader(csvfile, **options)
        for row in spamreader:
            values = row[1].split(options['delimiter'])
            if _unicode:
                values = [unicode(value) for value in values]
            data[row[0]] = values
    return data


d = {
    "Hello" : ['aa','bb','cc','dd'],
    "World" : ['e','f','g','h']
}

filename = "dataFile.csv"
create(d, filename)

# print as strings
print readFile(filename)
print readFile(filename, True)

这将输出以下内容:

# string values
{
    'World': ['e', 'f', 'g', 'h'], 
    'Hello': ['aa', 'bb', 'cc', 'dd']
}
# unicode values
{
    'World': [u'e', u'f', u'g', u'h'], 
    'Hello': [u'aa', u'bb', u'cc', u'dd']
}

当你打开csv文件时,它的外观如下:

CSV File