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”顺序?
答案 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)])