How to solve dictionary changed size during iteration error?

后端 未结 8 1979
滥情空心
滥情空心 2020-12-06 01:40

I want pop out all the large values and its keys in a dictionary, and keep the smallest. Here is the part of my program

for key,value in dictionary.items():
         


        
8条回答
  •  盖世英雄少女心
    2020-12-06 01:45

    In Python3, Try

    for key in list(dict.keys()):
        if condition:
            matched
            del dict[key]
    

    1 more thing should be careful when looping a dict to update its key:

    Code1:

    keyPrefix = ‘keyA’
    for key, value in Dict.items():
        newkey = ‘/’.join([keyPrefix, key])
        Dict[newkey] = Dict.pop(key)
    

    Code2:

    keyPrefix = ‘keyA’
    for key, value in Dict.keys():
        newkey = ‘/’.join([keyPrefix, key])
        Dict[newkey] = Dict.pop(key)
    

    Result of code1/code2 is:

    {‘keyA/keyA/keyB’ : ”, ‘keyA/keyA/keyA’: ”}
    

    My way to resolve this unexpected result:

        Dict = {‘/’.join([keyPrefix, key]): value for key, value in Dict.items()}
    

    Link: https://blog.gainskills.top/2016/07/21/loop-a-dict-to-update-key/

提交回复
热议问题