为了账号安全,请及时绑定邮箱和手机立即绑定

创建嵌套字典的 Pythonic 方法

创建嵌套字典的 Pythonic 方法

千巷猫影 2023-02-07 16:33:22
我正在寻找一种从列表和字典创建嵌套字典的 Pythonic 方式。以下两个语句产生相同的结果:a = [3, 4]b = {'a': 1, 'b': 2}c = dict(zip(b, a))c = {k: v for k, v in zip(b, a)}输出是:{3: 'a', 4: 'b'}期望的结果是:{3: {'a': 1}, 4: {'b': 2}}我可以开始使用循环,但我认为没有必要。当然,之后我将需要再次压平那些字典。
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

>>> {k: {va: vb} for k, (va, vb) in zip(a, b.items())}

{3: {'a': 1}, 4: {'b': 2}}


查看完整回答
反对 回复 2023-02-07
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

像这样:


a = [3, 4]

b = {'a': 1, 'b': 2}

c = {i: {k:b[k]} for i,k in zip(a,b)}


print(c)

输出:


{3: {'a': 1}, 4: {'b': 2}}


查看完整回答
反对 回复 2023-02-07
?
慕标5832272

TA贡献1966条经验 获得超4个赞

在我看来,一种更“Pythonic”的方式是使用更具描述性的变量名和dict()构造函数:


keys = [3, 4]

orig_dict = {'a': 1, 'b': 2}

nested_dict = {key: dict([item]) for (key, item) in zip(keys, orig_dict.items())}

另一种方法,使用中间可迭代:


sub_dicts = [dict([item]) for item in orig_dict.items()]

nested_dict = dict(zip(keys, sub_dicts))

最后,在这种情况下,只使用循环似乎就好了:


nested_dict = {}

for key, item in zip(keys, orig_dict.items()):

    nested_dict[key] = dict([item])


查看完整回答
反对 回复 2023-02-07
  • 3 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信