1

首先,我试图在谷歌搜索答案,但由于我是 python 新手,所以很难找到一个好的答案。

我想将一本字典中的一些值转换为 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”的顺序?

4

3 回答 3

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 。

于 2013-06-19T10:29:49.077 回答
0

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

mydictionary = {"one" : "1", "two" : 2, "three" : "3"}
w = csv.DictWriter(sys.stderr, fields=('one', 'three'), extrasaction='ignore')
w.writerow(mydictionary)
于 2013-06-19T10:43:41.570 回答
0

在使用顺序很重要的字典时,您可以使用 andOrderedDict而不是普通 dict的:

>>> mydictionary = collections.OrderedDict()
>>> mydictionary["one"]=1
>>> mydictionary["two"]=2
>>> mydictionary["three"]=3
>>> mydictionary
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
于 2013-06-19T10:43:53.993 回答