gpt4 book ai didi

python - 将字典值除以 Python 中同一键中的另一个值

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:14 26 4
gpt4 key购买 nike

我在这里尝试一种复杂的操作。我有一个具有以下结构的字典:

'Paul ': [5, Counter({'i': 1, 'in': 1, 't': 1, 'fa': 1, 'cr': 1})],
'Lisa ': [4, Counter({'f': 3, 'bo': 1})],
'Tracy ': [6, Counter({'sl': 3, 'fi': 1, 'an': 1, 'piz': 1})], '
'Maria': [2, Counter({'t': 2})]

我需要做的是将每个计数器值除以键中的第一个值,并将这些值附加到键中。这样我就有了等同于:

'Paul': [5, Counter({'i': 1, 0.2, 'in': 1, 02, 't': 1, 02, 'cr': 1, 0.2})], 
'Lisa ': [4, Counter({'f': 3, 0.75, 'bo': 1, 0.25})],
'Tracy ': [6, Counter({'sl': 3, 0.5, 'fi': 1, 0.16 'an': 1, 0.16 'piz': 1, 016 })], '
'Maria': [2, Counter({'t': 2, 1})]

其中第一行counter的值除以5,第二行除以4,依此类推。我还尝试过使用相同键的两个不同字典,并将第一个字典键的每个值除以第二个字典键的值,

k: float(dict1[k])/dict2[k] for k in dict1.keys() & dict2.keys()}

但也做不到。有没有直接的方法来做到这一点?非常感谢您的帮助!

最佳答案

正如 Martijn 在评论中指出的那样,您可以使用 Counter() 对象作为您的值,这是一种将您的值更改为以元组作为值的字典的方法:

from collections import Counter

data = {'Paul ': [5, Counter({'i': 1, 'in': 1, 't': 1, 'fa': 1, 'cr': 1})],
'Lisa ': [4, Counter({'f': 3, 'bo': 1})],
'Tracy ': [6, Counter({'sl': 3, 'fi': 1, 'an': 1, 'piz': 1})],
'Maria': [2, Counter({'t': 2})]}

for lst in data.values():
lst[1] = {k: (lst[0], float(v)/lst[0]) for k, v in lst[1].items()}

结果:

>>> data
{'Lisa ': [4, {'bo': (4, 0.25), 'f': (4, 0.75)}],
'Maria': [2, {'t': (2, 1.0)}],
'Paul ': [5, {'cr': (5, 0.2), 'fa': (5, 0.2), 'i': (5, 0.2), 'in': (5, 0.2), 't': (5, 0.2)}],
'Tracy ': [6, {'an': (6, 0.16666666666666666), 'fi': (6, 0.16666666666666666), 'piz': (6, 0.16666666666666666), 'sl': (6, 0.5)}]}

请注意,这会修改您当前的字典,下面是您可以创建新字典的方法:

result = {}
for key, lst in data.items():
result[key] = [lst[0], {k: (lst[0], float(v)/lst[0]) for k, v in lst[1].items()}]

关于python - 将字典值除以 Python 中同一键中的另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19870984/

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