我似乎无法抵消循环中的迭代器

2024-10-05 18:54:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用偏移量[I+1]遍历迭代器

我已经枚举了我的dict。现在我想用偏移第二个数据帧的函数访问dfc

dfc = dict() 
mydict = {1: 6, 2: 4,3: 10, 4: 7, 5: 3}
for i, (k, v) in enumerate(mydict.items()):
    dfc[(i)] = v
    print("index: {}, key: {}, value: {}".format(i, k, v))      

for i in range(0,5,1):
   result[i] = dfc[i] * dfc[i+1]

但我有个错误:

  File "<ipython-input-139-b31501e8f8af>", line 2, in <module>
    result[i] = dfc[i] * dfc[i+1]

KeyError: 5

Tags: 数据key函数inforindexitemsresult
1条回答
网友
1楼 · 发布于 2024-10-05 18:54:04

您访问不存在的密钥,这就是错误的原因。您可以修复此问题:

mydict = {1: 6, 2: 4, 3: 10, 4: 7, 5: 3}
# there is no sense in creating dfc - if you need a dublicate, use dfc = dict(mydict)
sorted_keys = sorted(mydict) # sort keys - dicts are unordered / insert ordered from 3.7 on

for k in sorted_keys: 
    print(f"index: {k}, key: {k}, value: {mydict[k]}")

result = {}
for i in sorted_keys:
    result[i] = mydict[i] * mydict.get(i+1,1)  # avoid key error, if not existst, mult by 1

for k in sorted_keys: 
    print(f"index: {k}, key: {k}, value: {result[k]}")

输出:

index: 1, key: 1, value: 6
index: 2, key: 2, value: 4
index: 3, key: 3, value: 10
index: 4, key: 4, value: 7
index: 5, key: 5, value: 3

index: 1, key: 1, value: 24
index: 2, key: 2, value: 40
index: 3, key: 3, value: 70
index: 4, key: 4, value: 21
index: 5, key: 5, value: 3

使用dict.get(key,default)允许尝试获取值,如果不存在,则允许使用默认值1。无论什么都不会改变结果

Why dict.get(key) instead of dict[key]?

相关问题 更多 >