【问题标题】:Add list of dictionary to nested dictionary without it being in a list anymore将字典列表添加到嵌套字典中,而不再包含在列表中
【发布时间】:2021-05-10 06:21:11
【问题描述】:
names = ['jan', 'piet', 'joris', 'corneel','jef']
ages = ['one', 'two', 'thee', 'four','five']

namesToDs = [{'name': name} for name in names]
ageToDs = [{'age': age} for age in ages]

concat = [[name, age] for name,age in zip(namesToDs,ageToDs)]


context = {'Team1': {'player1': concat[0] }}
print(context)

这将产生以下嵌套字典。

{'Team1': {'player1': [{'name': 'jan'}, {'age': 'one'}]}}

我希望结果是:

{'Team1': {'player1': {'name': 'jan'}, {'age': 'one'}}}

所以没有列表中的 []。

我尝试将其转换为字典。 我首先使用 list 和 map 函数将它放在一个元组中,但没有成功。

我对 Python 或编程不是很熟悉,如果我的方向有误,请告诉我。

我希望它在这个嵌套字典中的原因是能够轻松访问烧瓶前端中的数据。

【问题讨论】:

  • 你想要的不是一个有效的standard type
  • 您是否想要:{'Team1': {'player1': {'name': 'jan', 'age': 'one'}}}?在这种情况下,请将[name, age] 替换为{**name, **age}
  • @L3viathan 我用一些虚拟数据对此进行了测试,我确实能够将我想要的东西发送到我的烧瓶前端!我对 **name,**age 不太熟悉(还 ;-) )。但这已经帮助了我,谢谢!

标签: python list dictionary flask jinja2


【解决方案1】:

您期望的结果不是可能的字典。最接近的可能是这样的:

{'Team1': {'player1': {'name': 'jan', 'age': 'one'}}}

这是通过将[name, age] 替换为{**name, **age} 来实现的。完整代码:

names = ['jan', 'piet', 'joris', 'corneel','jef']
ages = ['one', 'two', 'thee', 'four','five']

namesToDs = [{'name': name} for name in names]
ageToDs = [{'age': age} for age in ages]

concat = [{**name, **age} for name, age in zip(namesToDs, ageToDs)]


context = {'Team1': {'player1': concat[0]}}
print(context)

【讨论】:

  • 谢谢,这对我帮助很大。我确实在尝试使用 KeepAlive 建议的“标准类型”。我的问题解决了。我知道这是一个初学者的错误,关于我的问题为什么被否决的任何反馈?
  • 可能是因为人们希望您研究此类内容而不是提问。恕我直言,这就是 SO 的用途,所以你不应该介意提问。
  • 我同意,事后看来,我在谷歌上搜索了几个小时的错误问题。这让我来到了这里。来到这里几分钟就解决了我的问题。太糟糕了,这些反对票会阻止我在未来提出问题。
【解决方案2】:

最接近的 Python 有效 (standard type) 实例可能是

>>> from collections import ChainMap
>>> {'Team1': {'player1': dict(ChainMap(*concat[0]))}}
{'Team1': {'player1': {'age': 'one', 'name': 'jan'}}}

...假设您无法控制数据生成过程,即无法控制concat 的创建方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多