FaC*_*fee 6 python dictionary key slice hashable
说我有一个这样的字典:
d={0:1, 1:2, 2:3, 10:4, 11:5, 12:6, 100:7, 101:8, 102:9, 200:10, 201:11, 202:12}
我想创建一个子词典d1的切片d中,这种方式d1包含以下键:0, 1, 2, 100, 101, 102.最终输出应该是:
d1={0:1, 1:2, 2:3, 100:7, 101:8, 102:9}
考虑到我的真实字典包含超过2,000,000个项目,是否有一种有效的Pythonic方法?
我认为这个问题适用于键是整数的所有情况,当切片需要遵循某些不等式规则时,以及当最终结果需要在同一个字典中放在一起时.
您可以使用字典理解:
d = {0:1, 1:2, 2:3, 10:4, 11:5, 12:6, 100:7, 101:8, 102:9, 200:10, 201:11, 202:12}
keys = (0, 1, 2, 100, 101, 102)
d1 = {k: d[k] for k in keys}
Run Code Online (Sandbox Code Playgroud)
在Python 2.7,你也可以计算与(在Python 3.X取代钥匙it.ifilter(...)的filter(...)):
import itertools as it
d = {0:1, 1:2, 2:3, 10:4, 11:5, 12:6, 100:7, 101:8, 102:9, 200:10, 201:11, 202:12}
d1 = {k: d[k] for k in it.ifilter(lambda x: 1 < x <= 11, d.keys())}
Run Code Online (Sandbox Code Playgroud)