再次谷歌搜索小时的答案,但似乎我的情况是独特的,或者我对Py的理解是......呃,独特。
我有一个从MySQLdb.cursors.DictCursor查询构建的字典列表(我们称之为sqlListOfDict),Py print产生这个:
[{'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 print产生这个:
[{'priceChgPct': '',
'volYtday': '',
'priceNom': '',
'volDiffPct': '',
'volToday': '',
'time': '',
'date': '',
'secCode': '',
'volDiff': ''}]
我需要通过索引号将sListListOfDict中的特定字典附加myListOfDict,代码为:
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])
有效!第一个案子我做错了什么?谢谢你的帮助。
答案 0 :(得分: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)