您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用字典键比较列表值并使用python创建新字典

如何使用字典键比较列表值并使用python创建新字典

治疗lis为一组,而不是,所以你可以使用字典视图一个交叉点:

# python 2.7:
n = {k: d[k] for k in d.viewkeys() & set(lis)}

# python 3:
n = {k: d[k] for k in d.keys() & set(lis)}

或者,您可以使用简单的dict理解以及in针对的测试d

# python 2.6 or older:
n = dict((k, d[k]) for k in lis if k in d)

# python 2.7 and up:
n = {k: d[k] for k in lis if k in d}

这假定不是inlis中的所有值都将在in中dif k in d如果它们总是存在,则可以放弃该测试。

对于您的特定情况,第二种形式要快得多:

>>> from timeit import timeit
>>> timeit("{k: d[k] for k in d.viewkeys() & s}", 'from __main__ import d, lis; s=set(lis)')
2.156520128250122
>>> timeit("{k: d[k] for k in lis if k in d}", 'from __main__ import d, lis')
0.9401540756225586
python 2022/1/1 18:35:59 有344人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶