用于dict的元组的Python列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用于dict的元组的Python列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1723字,纯文字阅读大概需要3分钟。
内容图文
![用于dict的元组的Python列表](/upload/InfoBanner/zyjiaocheng/764/f120231997564daeb6be97d21e953384.jpg)
参见英文答案 > Nested defaultdict of defaultdict 4个
有一个python列表
[('schema1', 'table1', 'column_name1'), ('schema1', 'table1', 'column_name2'), ('schema1', 'table2', 'column_name3'), ('schema2', 'table3', 'column_name4')]
我需要将它转换为具有以下结构的python dict
schema1:
table1:
(column_name1,
column_name2)
table2:
(column_name3)
schema2:
table3:
(column_name4)
有没有有效的转换方式?
解决方法:
我用defaultdict生成这个,它生成defaultdict(list)实例作为默认值.
演示
>>> from collections import defaultdict
>>>
>>> d = defaultdict(lambda: defaultdict(list))
>>> data = [('schema1', 'table1', 'column_name1'), ('schema1', 'table1', 'column_name2'), ('schema1', 'table2', 'column_name3'), ('schema2', 'table3', 'column_name4')]
>>>
>>> for k1, k2, v in data:
...: d[k1][k2].append(v)
...:
>>> d
>>>
defaultdict(<function __main__.<lambda>()>,
{'schema1': defaultdict(list,
{'table1': ['column_name1', 'column_name2'],
'table2': ['column_name3']}),
'schema2': defaultdict(list, {'table3': ['column_name4']})})
为了准确匹配您想要的输出(虽然我没有太多理由),从d构建一个带有元组值的常规字典.
>>> d = {k1:{k2:tuple(v2) for k2, v2 in v1.items()} for k1, v1 in d.items()}
>>> d
>>>
{'schema1': {'table1': ('column_name1', 'column_name2'),
'table2': ('column_name3',)},
'schema2': {'table3': ('column_name4',)}}
说明
defaultdict初始值设定项接受可调用(在此示例中使用匿名lambda函数).只要缺少某个键,就会调用该callable,并将返回值用作回退值.
这条线
d = defaultdict(lambda: defaultdict(list))
正在创建一个defaultdict,当缺少一个键时会创建另一个defaultdict.第二个defaultdict在缺少密钥时创建一个列表.
>>> d = defaultdict(lambda: defaultdict(list))
>>> d['bogus']
>>> defaultdict(list, {})
>>> d['hokus']['pokus']
>>> []
内容总结
以上是互联网集市为您收集整理的用于dict的元组的Python列表全部内容,希望文章能够帮你解决用于dict的元组的Python列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。