无法在另一个dicts列表中添加带有dict的dicts列表

时间:2013-05-05 16:26:58

标签: python mysql-python

再次谷歌搜索小时的答案,但似乎我的情况是独特的,或者我对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])

有效!第一个案子我做错了什么?谢谢你的帮助。

1 个答案:

答案 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)