2013-04-20 59 views
0

您好我有類似
收集值一起在一個元組由前值subdicts關鍵

pq={<Timestamp: 2008-02-02 13:30:46>: {('1059', 'latitude'): 40.064889999999998, 
           ('1059', 'longitude'): 116.56359, 
           ('1466', 'latitude'): 39.92163, 
           ('1466', 'longitude'): 116.32633, 
           ('1563', 'latitude'): 39.864249999999998, 
           ('1563', 'longitude'): 116.39328, 
           ('1827', 'latitude'): 40.003770000000003, 
           ('1827', 'longitude'): 116.30907000000001}} 

,我想是這樣

pq={<Timestamp: 2008-02-02 13:30:46>: {'1059':{'latitude: 40.064889999999998,'longitude': 116.56359}, 
             '1466' :{'latitude': 39.92163,'longitude': 116.32633}, 
             '1563':{'latitude': 39.864249999999998, 'longitude':116.39328}, 
             '1827':{'latitude': 40.003770000000003,'longitude': 116.30907000000001}} 

我該怎麼做呢?

+0

你嘗試過什麼?這非常簡單。你閱讀原始字典,提取你想要的數據並建立一個新的字典。如果沒有爲你編寫代碼,很難更具體,如果我這樣做,我認爲你不會學到太多東西。 – 2013-04-20 16:40:02

+0

也,不是一個有效的字典密鑰。 – dansalmo 2013-04-20 16:44:20

+1

@dansalmo我確定這就是你打印'pq'所得到的結果 - 關鍵是一個'Timestamp'類,它可以自己打印。 – agf 2013-04-20 16:52:31

回答

0

你想通過拆分元組鍵來進行子化。

爲了自動創建子設備,請使用defaultdict

迭代要修改字典的項目,您可以使用元組拆包分裂元組鍵:

>>> import collections 
>>> subpq = collections.defaultdict(dict) 
>>> for (number, type), value in pq.values()[0].items(): 
... subpq[number][type] = value 
... 
>>> subpq 
defaultdict(<type 'dict'>, 
      {'1059': {'latitude': 40.06489, 'longitude': 116.56359}, 
      '1827': {'latitude': 40.00377, 'longitude': 116.30907}, 
      '1563': {'latitude': 39.86425, 'longitude': 116.39328}, 
      '1466': {'latitude': 39.92163, 'longitude': 116.32633}}) 
+0

非常感謝。你給了我主角。 我可以按照你所說的寫這樣的東西。 X = df.index [0] #first一個數據幀,其是一個時間戳 subpq的指數[X] = {}
爲(數量,類型),在pq.values(值)[0] .items ():
如果號碼不subpq [X] .keys():
subpq [X] .update({號:{類型:值}})
否則:
subpq [X] [數] .update({type:value})
user2179627 2013-04-20 17:44:23