2013-05-05 117 views
1

繼續谷歌時間回答,但似乎我的情況是獨特的,或者我對Py的理解是......呃,獨一無二。不能追加字典列表從另一個字典列表

我的字典(姑且稱之爲sqlListOfDict)從MySQLdb.cursors.DictCursor查詢生成的列表,PY印刷產量的:

[{'volYtday': 18083292, 
    'volToday': 49395261, 
    'time': datetime.timedelta(0, 34800), 
    'priceChgPct': Decimal('1.2400'), 
    'volDiffPct': 173.15414140301445, 
    'priceNom': Decimal('6.5300'), 
    'date': datetime.date(2013, 4, 30), 
    'secCode': 'xoxoxo', 
    'volDiff': 31311969}] 

然後,我有字典的另一份名單(姑且稱之爲myListOfDict) ,宣佈爲空,PY打印產生這樣的:

[{'priceChgPct': '', 
    'volYtday': '', 
    'priceNom': '', 
    'volDiffPct': '', 
    'volToday': '', 
    'time': '', 
    'date': '', 
    'secCode': '', 
    'volDiff': ''}] 

我需要追加myListOfDict與sqlListOfDict通過索引號特定詞典,代碼:

myListOfDict.append(sqlListOfDict[0]) 

沒有快樂,myListOfDict仍然是聲明(空),並且Py沒有給出任何回溯。

我做了一些實驗:

listDictA = [dict.fromkeys(['secCode', 'volDiff'])] 

listDictB = [{'secCode': 'valB1', 'volDiff': 1000}, 
      {'secCode': 'valB2', 'volDiff': 1000}, 
      {'secCode': 'valB3', 'volDiff': 1000}, 
      {'secCode': 'valB4', 'volDiff': 1000}, 
      {'secCode': 'valB5', 'volDiff': 1000}, 
      {'secCode': 'valA1', 'volDiff': 1000}] 

運行相同的命令:

listDictA.append(listDictB[0]) 

它的工作!第一個案件我做錯了什麼?感謝您的幫助。

+1

你能分享你的實際代碼嗎? – 2013-05-05 16:44:42

+0

現在我想了解更多。你可以不用調用打印出一行.fetchone()... – 2013-05-05 16:48:58

+0

嗨馬丁,你的意思是哪個實際的代碼?謝謝。 – 2013-05-05 16:54:27

回答

0

聽起來好像你期待myListOfDict中的第一項填寫了sqlListOfDict中第一項的值。

你說myListOfDict聲明爲空,但事實是你不需要那種聲明。在Python中,您可以將任何您喜歡的對象附加到列表中,而無需聲明其中包含哪些類型。

我將簡化你的榜樣了一下,希望清除它:

>>> myListOfDict = [] # create an empty list 
>>> sqlListOfDict = [{'volYtday': 18083292, 
         'volToday': 49395261}] 
>>> myListOfDict.append(sqlListOfDict[0]) 
>>> myListOfDict 
[{'volYtday': 18083292, 'volToday': 49395261}] 

另外,如果你正在處理兩個列表,你可能要考慮與第二延伸的第一列表,而不是隻追加第一個項目。

>>> myListOfDict.extend(sqlListOfDict)