【发布时间】:2019-06-17 00:24:43
【问题描述】:
有一个有序的字典,它有重复的键值对。想要使那些重复的值唯一。 例如。 4244158 & 4244159 组合存在两次 我想保留其中一个。
现在下面提到的代码在 python2 上很好,因为有序 dict 可以变异,但在 python3 中不能,所以我复制了有序 dict 并将其与原始有序 dict 进行比较
ordered_parkstop_dict = OrderedDict([('4244162', []),
('4244158', ['4244159']),
('4244159', ['4244158']),
('4244157', ['4244160', '4244161']),
('4244160', ['4244157', '4244161']),
('4244161', ['4244157', '4244160'])])
new_ordered_parkstop_dict = ordered_parkstop_dict.copy()
for key, value in ordered_parkstop_dict.items():
for k,v in ordered_parkstop_dict.items():
klist = []
keylist = []
if value and v:
if len(v)==1 and len(value)==1:
klist.append(k), keylist.append(key)
if (keylist == v) and (klist == value and len(value) == 1):
new_ordered_parkstop_dict.pop(key)
为了澄清,我只想删除 x -> [y], y -> [x] 类型的重复项,即包含一项的列表。
【问题讨论】:
-
你能准确定义哪些组合被认为是重复的吗?您是否只想删除
x -> [y], y -> [x]类型的重复项,即包含一项的列表? -
@jpp 是的,我只想从 new_ordered_parkstop_dict 中删除类型 x -> [y], y -> [x]
标签: python python-3.x dictionary ordereddictionary