字典元素合并--》{‘林平之-林震南’:2, ‘林震南-林平之‘:3}-->{‘林平之-林震南‘:5}

正常思路:
下面展示一些 代码

c_key = {'林平之,林震南':2,'林震南,林平之':3,'任盈盈,令狐冲':4}
# c_key2用于保存无向图关系
# 复制字典(因为觉得一个地址的那种不太好所以没有直接等于,其实对结果没有啥影响)
c_key2 = c_key.copy()
for key in c_key:
    # 将键值中的姓名分割,用于后面比较
    name1 = key.split(',')
    # 第二层循环,比较字典中元素 
    for key2 in c_key:
        if key == key2:
            continue
        name2 = key2.split(',')
        if name1[0]==name2[1] and name1[1]==name2[0]:
            c_key2[key] += c_key2[key2]
            c_key2.pop(key2)
            break

// A code block
var foo = ‘bar’;


```javascript
// An highlighted block
var foo = 'bar';

总结一下上面的错误:字典遍历总是从头开始,所以删除的内容太多了,就比如代码中的字典,外层循环运行一次后,c_key2变成{‘林平之,林震南’:5,‘任盈盈,令狐冲’:4},第二次外层循环时,由于c_key没有删除元素,即还是{‘林平之,林震南’:2,‘林震南,林平之’:3,‘任盈盈,令狐冲’:4}那么就将要删除‘林平之,林震南’这组数据,删除这组数据,就会要把这个键对应的值加到包含姓名相同的键上,而c_key2中已经没有了这个键,所以就会报错,blabla说了这么多,其实就是删除了c_key2的数据,与c_key不匹配,所以报KeyError
下面展示一下改正了后的代码:

di = {'林平之,林震南':2,'林震南,林平之':3,'任盈盈,令狐冲':4}
keys = [key for key in di]
for i in range(len(keys)):
    # 将键值中的姓名分割,用于后面比较
    name1 = keys[i].split(',')
    # 2次遍历,比较字典中元素 
    for j in range(i+1,len(keys)):
        name2 = keys[j].split(',')
        if name1[0]==name2[1] and name1[1]==name2[0]:
            di[keys[i]] += di[keys[j]]
            print('pop_list append:',keys[j])
            di.pop(keys[j])
            break

小错误也很烦,记录一哈,可能错的地方不一样,用不上,那就换一家,加油吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值