1

再次谷歌搜索时间以寻求答案,但似乎我的情况是独一无二的,或者我对 Py 的理解是......呃,独一无二的。

我有一个从 MySQLdb.cursors.DictCursor 查询构建的字典列表(我们称之为 sqlListOfDict),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 print 产生这个:

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

我需要通过索引号将 sqlListOfDict 中的特定字典附加到 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])

有效!第一个案例我做错了什么?感谢您的帮助。

4

1 回答 1

0

听起来您希望 in 中的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)
于 2013-05-05T16:57:52.943 回答