2013-06-19 33 views
1

Firslty,我試着搜索谷歌的答案,但它變成很難找到一個好的答案,因爲我是python新手。如何從Python字典中選擇一些值並將其放入csv中

我想將一個字典中的一些值放入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」順序?

+2

可能的重複[爲什麼python命令我的字典像這樣?](http://stackoverflow.com/questions/526125/why-is-python-ordering-my-dictionary-like-so)以及相關的: http://stackoverflow.com/questions/3420122/python-filter-dict-to-contain-only-certain-keys –

+1

你不幸在一個帖子中問*兩個*問題;其中之一是重複的。另一個可以用'csv.DictWriter()'代替普通的作者最好的解決;請查看[documentation](http://docs.python.org/2/library/csv.html#csv.DictWriter)。 –

回答

2

你可以做這樣的事情創建一個子詞典:

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

print subdict 

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

字典是無序的結構在Python,所以在其中輸入鍵的順序不一定有順序的任何軸承在其中檢索它們。它可能是相同的,相反的,或者如果在此期間操作已應用於字典,則可能是其他內容。如果您確實需要訂單保持不變,請查看Ordered Dictionaries

0

你會更好使用csv.DictWriter() class;它允許你指定列的順序,並挑選出只有特定的鍵:

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

當字典,其中順序很重要的工作,你可以使用和OrderedDict代替dict

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