【问题标题】:Can't append a list of dicts with dict from another list of dicts无法使用另一个字典列表中的字典附加字典列表
【发布时间】:2013-05-05 16:26:58
【问题描述】:

又在谷歌上搜索了几个小时以寻求答案,但似乎我的情况很独特,或者我对 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 打印产生这个:

[{'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])

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

【问题讨论】:

  • 你能分享你的实际代码吗?
  • 现在我想多了。您可以打印一行而不调用 .fetchone()...
  • 嗨马丁,你是指哪个实际代码?谢谢。
  • 产生sqlListOfDict的代码。另外,你期待什么输出
  • 嗨,杰森,没错。 'print sqlListOfDict[i]['anyKey']' 没有悲伤。我需要为追加做不同的事情吗?谢谢。

标签: python mysql-python


【解决方案1】:

听起来您希望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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2021-11-03
    相关资源
    最近更新 更多