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

标签 python dictionary compare

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

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']}

关于python比较字典的值并丢弃它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50092332/

相关文章:

python - 我是否正确组织了我的 Django 应用程序?

python - 在 Python/Pyramid/CherryPy 中处理定期内务管理任务的正确方法是什么?

python - 在 setdefault 之后追加到字典中的列表

java - MapDB集合大小问题

performance - 戈朗 : Find two number index where the sum of these two numbers equals to target number

c# - 规范化两个字符串然后比较

java - 比较 JTree 的有效方法是什么?

python - 我的谷歌地图 api key 在 python 中不起作用,尽管它在 swift 中工作

python - 访问 twisted.web.client.Agent 的套接字选项

r - 检查一个数据帧是否是另一个数据帧的重新排序