Skip to main content
 首页 » 编程设计

python比较字典的值并丢弃它们

2025年05月04日26mfrbuaa

我有一个字典,其中有一个键,每个键有多个值:

d={'POU': ['GL', '1', '999', '4646'] 
   'TSA': ['LA', '2', '888', '4545'] 
   'RAS': ['NA', '5', '565', '1316'] 
   'TSO': ['RA', '7', '575', '1376']} 

每个键的第二个值表示以公里为单位的距离(1、2、5、7)。并且键是根据距离排序的。

我想比较后面key的距离,舍弃距离比较近且距离小于等于1km的key。 所以最终的字典将是:

d={'POU': ['GL', '1', '999', '4646'] 
   'RAS': ['NA', '5', '565', '1316'] 
   'TSO': ['RA', '7', '575', '1376']}    

如何做到这一点?

到目前为止,我所做的只是根据距离限制按键,例如:

if (float(d[key][1])<10): 

但我无法将每个键的值与下一个键进行比较。我是 python 的菜鸟,最近两天我对它很着迷。

请您参考如下方法:

您可以遍历键并在条件匹配时删除它们。

# save keys in a list 
vals = list(d.keys()) 
 
## count keys 
dict_len = len(vals)  
 
# save keys to be removed 
to_rmv = []  
 
# iterate through keys 
for i in range(dict_len): 
    for j in range(i+1, dict_len): 
        p = int(d[vals[j]][1])- int(d[vals[i]][1]) ## second index is distance 
        if p <= 1: 
            to_rmv.append(vals[j])             
 
## remove keys 
for k in to_rmv: 
    del d[k] 
 
## see output 
print(d) 
 
{'POU': ['GL', '1', '999', '4646'], 
 'RAS': ['NA', '5', '565', '1316'], 
 'TSO': ['RA', '7', '575', '1376']}