【发布时间】:2017-03-19 07:58:30
【问题描述】:
假设我有一个这样构建的字典:
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}
我想通过对d 进行切片来创建一个子字典d1,使d1 包含以下键:0, 1, 2, 100, 101, 102。最终输出应该是:
d1={0:1, 1:2, 2:3, 100:7, 101:8, 102:9}
鉴于我的真实字典包含超过 2,000,000 项,是否有一种高效的 Pythonic 方式?
我认为这个问题适用于键是整数的所有情况,切片需要遵循某些不等式规则,以及最终结果需要将一堆切片放在同一个字典。
【问题讨论】:
-
这些规则从何而来?如果这些键没有值会发生什么?你有没有考虑过字典理解
{k: d[k] for k in [0, 1, ...]}? -
就我而言,所有键都有值。
-
你不能真正“切片”字典,因为它是一个可变映射而不是一个序列。我认为听写理解是你最好的选择。
-
对字典进行切片并不是不可能的; Python 只是没有像 Perl 那样提供语法(尽管在 Perl 中,您只是返回相应的值,而不是哈希的子集)。
标签: python dictionary key slice hashable