gpt4 book ai didi

python删除字典中的重复值并更改键

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:51 25 4
gpt4 key购买 nike

我正在尝试删除复杂字典中的重复值

a = {0:{'time':11}, 1:{'time':12}, 2:{'time':12}, 3:{'time':13}}

有没有办法去掉2:{'time':12},得到

b = {0:{'time':11}, 1:{'time':12}, 2:{'time':13}}

我的代码是

m = {}
for key, value in a.items():
if key == 0:
m[0] = value
elif a[key] != a[key -1]:
m[key] = value

但结果是{0: {'time': 11}, 1: {'time': 12}, 3: {'time': 13}}我想知道是否有任何方法可以将结果作为 dict b,以及是否有任何方法可以更快地做到这一点,因为我有很多数据要处理。任何帮助将不胜感激!

最佳答案

首先让我们创建一个所有时间的列表:

>>> c = [a[k]['time'] for k in sorted(a)]
>>> c
[11, 12, 12, 13]

然后让我们使用 groupby 按连续相等的值分组:

>>> from itertools import groupby
>>> d = [x for x, y in groupby(c)]
>>> d
[11, 12, 13]

现在我们可以用新值压缩键并创建一个字典:

 >>> dict(zip(sorted(a), d))
{0: 11, 1: 12, 2: 13}

我们可以组合所有步骤:

>>> keys = sorted(a)
>>> dict(zip(keys, (x for x, y in groupby(a[k]['time'] for k in keys))))
{0: 11, 1: 12, 2: 13}

关于python删除字典中的重复值并更改键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29973301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com