繁体   English   中英

将dict列表转换为dicts字典的优雅方式

[英]Elegant way to transform a list of dict into a dict of dicts

我有一个像这个例子中的字典列表:

listofdict = [{'name': 'Foo', 'two': 'Baz', 'one': 'Bar'}, {'name': 'FooFoo', 'two': 'BazBaz', 'one': 'BarBar'}]

我知道每个字典(以及其他键)中都存在'name',并且它是唯一的,并且不会出现在列表中的任何其他字典中。

我想通过使用键'name'来访问'two'和'one'的值。 我想字典词典会最方便吗? 喜欢:

{'Foo': {'two': 'Baz', 'one': 'Bar'}, 'FooFoo': {'two': 'BazBaz', 'one': 'BarBar'}}

有了这个结构,我可以轻松地遍历名称,并通过使用名称作为键来获取其他数据。 您对数据结构有任何其他建议吗?

我的主要问题是:进行这种转变的最好和最恐怖的方法是什么?

d = {}
for i in listofdict:
   d[i.pop('name')] = i

如果你有Python2.7 +:

{i.pop('name'): i for i in listofdict}
dict((d['name'], d) for d in listofdict)

如果你不介意dict剩下的name键,这是最简单的。

如果要删除name s,您仍然可以在一行中轻松完成:

dict(zip([d.pop('name') for d in listofdict], listofdict))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM