如何从python字典中选择一些值并将它们放入csv中

时间:2013-06-19 10:21:05

标签: python csv dictionary

Firslty,我试图搜索谷歌的答案,但由于我是蟒蛇新手,因此很难找到一个好的答案。

我想将一个字典中的一些值放入csv格式。所有价值观都很容易:

import csv
import sys
mydictionary = {"one" : "1", "two" : 2, "three" : "3"}
w = csv.writer(sys.stderr)
w.writerow(mydictionary.values())

但如果我只想显示“一个”和“三个”值怎么办?接下来的问题是,为什么数字显示为“3,2,1”顺序,而不是“1,2,3”顺序?

3 个答案:

答案 0 :(得分:3)

你可以通过这样的方式创建一个子词典:

subkeys = ["one", "three"]
subdict = {x: mydictionary[x] for x in mydictionary if x in subkeys}

print subdict

{'one': '1', 'three': '3'}

字典不是Python中的有序结构,因此输入键的顺序不一定与它们的检索顺序有任何关系。如果在过渡期间将操作应用于字典,则可能是相同的,相反的或其他内容。如果您确实需要保持订单保持不变,请查看Ordered Dictionaries

答案 1 :(得分:0)

最好使用csv.DictWriter() class;它允许您指定列的顺序,并仅选择某些键:

mydictionary = {"one" : "1", "two" : 2, "three" : "3"}
w = csv.DictWriter(sys.stderr, fields=('one', 'three'), extrasaction='ignore')
w.writerow(mydictionary)

答案 2 :(得分:0)

使用字典时,订单很重要,您可以使用OrderedDict而不是普通 dict

>>> mydictionary = collections.OrderedDict()
>>> mydictionary["one"]=1
>>> mydictionary["two"]=2
>>> mydictionary["three"]=3
>>> mydictionary
OrderedDict([('one', 1), ('two', 2), ('three', 3)])