[英]Convert Python dictionary to nested dictionary
我有一个关于 python 字典和嵌套字典的问题。 如果我有这样的字典:
data = {'abc': ['aaa', 'bbb', 'ccc'], 'def': ['ddd', 'eee', 'fff']}
我可以以某种方式将这本字典中的列表也转换为字典吗? 所以输出会是这样的:
data = {'abc': {'aaa', 'bbb', 'ccc'}, 'def': {'ddd', 'eee', 'fff'}}
我是 Python 新手,只是想了解嵌套字典及其工作原理。 先感谢您!
如果你想要一个集合字典,那么只需使用字典理解:
{key:set(value) for key,value in data.items()}
包含 dicts 的 dict 的语法是
data = {
'abc': {'aaa':1, 'bbb':2, 'ccc':42},
'def': {'ddd':45, 'eee':"Monty", 'fff':None}, # this trailing comma is Pythonic
}
所问的问题是一个包含集合的字典,它是完全有效和有用的。
如果您的主要目的是确定存在或不存在,您将使用包含集合(而不是列表)的 dict,就像if 'aaa' in data['abc']:
特别是不要将任何值与内部键相关联。 (在将集合添加到 Python 之前,程序员使用 dicts 将所有值设置为任意且不相关的值,例如1
或None
)
如果您希望能够存储由外部和内部键访问的值,您将使用包含 dicts 的 dict,如data['aaa']['ddd'] = "I'm new here"
,并且您可以当然仍然测试if 'ddd' in data['aaa']:
data = {'abc': {'aaa', 'bbb', 'ccc'}, 'def': {'ddd', 'eee', 'fff'}}
是无效的python 字典。 Python 字典采用键:值对的形式
您目前在上面的字典中拥有的是集合字典而不是字典字典。
您可以做的是添加一些“虚拟”键以将列表转换为字典。 例如下面的代码:
data = {'abc': ['aaa', 'bbb', 'ccc'], 'def': ['ddd', 'eee', 'fff']}
dict2 = {}
i = 0
for key, value in data.items():
dict2[key] = {}
for element in value:
dict2[key][i] = element
i += 1
i = 0
print dict2
将为您提供以下输出(这是一个嵌套字典):
{'abc': {0: 'aaa', 1: 'bbb', 2: 'ccc'}, 'def': {0: 'ddd', 1: 'eee', 2: 'fff'}}
只需使用set
完成此任务:
data = {'abc': ['aaa', 'bbb', 'ccc'], 'def': ['ddd', 'eee', 'fff']}
b = {}
for key, value in data.items():
b[key] = set(value)
print(b)
输出:
{'abc': {'ccc', 'bbb', 'aaa'}, 'def': {'fff', 'ddd', 'eee'}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.