【发布时间】:2018-10-10 01:35:01
【问题描述】:
我有一个字典,每个键都有一个键和多个值:
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),单位为公里。并且键是根据距离排序的。
我想比较下一个键的距离,丢弃彼此靠近且距离等于或小于 1km 的键。 所以最终的字典将是:
d={'POU': ['GL', '1', '999', '4646']
'RAS': ['NA', '5', '565', '1316']
'TSO': ['RA', '7', '575', '1376']}
如何做到这一点?
到目前为止,我所做的只是根据距离限制键,例如:
if (float(d[key][1])<10):
但我无法将每个键的值与下一个键的值进行比较。我是 python 的菜鸟,过去两天我一直对它感到疯狂。
【问题讨论】:
-
字典中的键未排序。
-
@user3650827 你可以使用 OrderedDict 类型来索引键值对。
-
@Scott Hunter 我这样做是在读取一个根据距离对它们进行排序的文件。 d = {} #with open("hypoinv.err") as f: with open("file.txt") as f: for line in f: key, value = line.split(None, 1) d[key] = (value.split()) #order 输出为文件中的顺序 d=collections.OrderedDict(d)
-
@Ari KI 尝试使用:for idx,key in enumerate(d.items()): if ((idx+1, key[1][1]) - (idx, key[1 ][1]))
-
for idx, kv in enumerate(list(d.items()))。您可以使用列表来索引 dict 参考:stackoverflow.com/questions/10058140/…
标签: python dictionary compare