当前位置:  开发笔记 > 编程语言 > 正文

Python字典理解列表的字典

如何解决《Python字典理解列表的字典》经验,为你挑选了1个好方法。

我想从以下列表中创建一个字典

[{'fips': '01001', 'state': 'AL', 'name': 'Autauga County'}, {'fips': '20005', 'state': 'KS', 'name': 'Atchison County'}, {'fips': '47145', 'state': 'TN', 'name': 'Roane County'}]

结果应该是名称作为键,"美国"作为值.

例如:

{'Autauga County': 'United States', 'Atchison County' : 'United States',  'Roane County' : 'United States'}

我可以通过几个for循环来完成这个,但我想学习如何使用Dictionary Comprehensions来完成它.



1> Jamie K. Pha..:
in_list = [{'fips': '01001', 'state': 'AL', 'name': 'Autauga County'}, 
           {'fips': '20005', 'state': 'KS', 'name': 'Atchison County'},
           {'fips': '47145', 'state': 'TN', 'name': 'Roane County'}]

out_dict = {x['name']: 'United States' for x in in_list if 'name' in x}

一些学习笔记:

理解仅适用于Python 2.7及更高版本

字典理解与列表理解非常相似,除了花括号{}(和键)

如果您不知道,您还可以在for循环之后添加更复杂的控制流,例如 [x for x in some_list if (cond)]

为了完整,如果你不能使用理解,试试这个

out_dict = {}

for dict_item in in_list:
    if not isinstance(dict_item, dict):
        continue

    if 'name' in dict_item:
        in_name = dict_item['name']
        out_dict[in_name] = 'United States'

正如评论中所提到的,对于Python 2.6,您可以替换为{k: v for k,v in iterator}:

dict((k,v) for k,v in iterator)

您可以在此问题中阅读更多相关信息

快乐的编码!


我完全不知道你为什么得到了投票.对于编写Python 2.7或3答案感觉不好,没有版本号的问题Python 3是一个很好的假设.
我也很困惑.我认为可以安全地假设当问题要求字典理解我们正在讨论支持字典理解的Python版本时......
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有