我有一个词典列表,例如:
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])
答案 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())