我有字典
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]
但它不起作用。我做错了什么?
答案 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})