2013-05-05 114 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)