将字典值列表写入文件

时间:2015-04-27 23:26:46

标签: python

我有一个词典列表,例如:

values = [{'Name': 'John Doe', 'Age': 26, 'ID': '1279abc'},
          {'Name': 'Jane Smith', 'Age': 35, 'ID': 'bca9721'}
         ]

我想要做的是将这个词典列表打印到制表符分隔的文本文件中,如下所示:

 Name    Age    ID
John Doe    26    1279abc
Jane Smith     35    bca9721

但是,我无法简单地打印这些值,截至目前我正在通过以下方式打印整个字典:

for i in values: 
    f.write(str(i))
    f.write("\n")

也许我现在需要遍历每个字典?我见过人们使用类似的东西:

for i, n in iterable:
    pass

但我从来没有理解过这一点。有人能够对此有所了解吗?

编辑:

似乎我可以使用这样的东西,除非有人有更多的pythonic方式(也许有人可以解释“为了我,在可交换中”?):

for dic in values:
    for entry in dic:
        f.write(dic[entry])

4 个答案:

答案 0 :(得分:4)

使用DictWriter这很简单。它的目的是编写以列为单位的数据,但如果我们将分隔符指定为制表符而不是逗号,我们可以使其工作正常。

from csv import DictWriter
values = [{'Name': 'John Doe', 'Age': 26, 'ID': '1279abc'},
          {'Name': 'Jane Smith', 'Age': 35, 'ID': 'bca9721'}]
keys = values[0].keys()
with open("new-file.tsv", "w") as f:
    dict_writer = DictWriter(f, keys, delimiter="\t")
    dict_writer.writeheader()
    for value in values:
        dict_writer.writerow(value)

答案 1 :(得分:0)

f.write('Name\tAge\tID')
for value in values:
    f.write('\t'.join([value.get('Name'), str(value.get('Age')), value.get('ID')]))

答案 2 :(得分:0)

您可能正在考虑items()方法。这将返回字典中每个条目的键和值。 http://www.tutorialspoint.com/python/dictionary_items.htm

for k,v in values.items():
    pass

答案 3 :(得分:0)

# assuming your dictionary is in values
import csv
with open('out.txt', 'w') as fout:
    writer = csv.DictWriter(fout, fields=values.keys(). delimiter="\t")
    writer.writeheader()
    writer.writerow(values.values())