首页 > 解决方案 > 有没有更 Pythonic 的方式来处理字典?

问题描述

我正在利用这样一个事实,即字典中的 python >= 3.7 元素是按插入顺序检索的。

我想创建一个字典,其中第一个跳过项目包含零;之后,他们从主字典中获取相关值

dict_1 = {
    'a1' : 11,
    'a2' : 12,
    'a3' : 13,
    'b1' : 14,
    'b2' : 15,
    'c1' : 16,
}

skip = 3

dict_2 = {}
for item in range(skip):
    dict_2[str(item)] = 0

index = 0
for key, item in dict_1.items():
    index += 1
    if index > skip:
        dict_2[key] = item

print(dict_2)

{'0':0,'1':0,'2':0,'b1':14,'b2':15,'c1':16}

为免生疑问,dict_2 中的键与 dict_1 中项目 < 跳过的键不同。

这可以满足我的要求,但它不优雅。我可以采取更蟒蛇的方法吗?

标签: pythonpython-3.xdictionary

解决方案


您可以使用islice来避免if检查:

from itertools import islice

dict_2 = {str(item): 0 for item in range(skip)}

for key, item in islice(dict_1.items(), skip, None):
    dict_2[key] = item

或者,将两个选项组合到一个循环中,使用enumerate

for i, (key, value) in enumerate(dict_1.items()):
    if i < skip:
        dict_2[str(i)] = 0
    else:
        dict_2[key] = value

推荐阅读