使用python从字典中删除对

时间:2016-05-10 09:33:36

标签: python dictionary

我有字典

Counter({'183019767': 1075, '291781172': 929, '24710024': 608, '211884417': 576, '154037610': 351, '165402000': 248, '20649754': 218, '134275433': 196, '110893265': 185, '261966422': 177, '5706248': 169, '30453150': 142, '132880803': 121,'324020417': 32, '18372999': 32, '332474699': 32, '1296153': 32, '85179': 31, '174448039': 31, '142345622': 30,  '151209537': 22, '135837721': 21, '64417676': 21, '350093413': 21, '189194442': 20, '40024441': 20, '8605568': 19, '9653942': 19, '38236943': 18, '136540780': 18, '142929569': 18, '68806963': 18)}

我需要删除对,value < 30 我试试

for keys in count_id:
    if count_id.values() < 30:
        del count_id[keys]

但它不起作用。我做错了什么?

4 个答案:

答案 0 :(得分:0)

您是说列表是否小于30而不是值。

改为if count_id[keys] < 30:

答案 1 :(得分:0)

我建议您列出一个列表来存储值小于30的所有键,然后尝试删除字典中的元素。

li =[]
for key in count_id.keys():
     if count_id[key] <30:
        li.append(key)
for key in li:
    del count_id[key] 

希望它有所帮助。

答案 2 :(得分:0)

您还应该在删除值之前复制字典。

temp =count_id.copy()
for keys in count_id.keys():
    if count_id[keys] < 30:
        del temp[keys]

答案 3 :(得分:0)

这会给你一个错误:

  

RuntimeError:字典在迭代期间改变了大小

您应该迭代计数器键的副本:

for k in list(count_id.keys()):
    if count_id[k] < 30:
        del count_id[k]

或者创建一个新的计数器:

new_count_id = Counter({k: v for k, v in count_id.iteritems() if v >= 30})