gpt4 book ai didi

python - 在字典中访问字典

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

我有一个默认字典,如下所示:

my_dict = default(dict, {"K": {"k": 2, "x": 1.0}, "S": {"_":1.0, "s":1}, "EH": {"e":1.0}})

键是音素,字典本身的值是出现一定次数的字素,它们是默认字典中的相应数字。

该函数应返回另一个包含概率的默认字典,如下所示:

defaultdict(<class 'dict'>, {'EH': {'e': 1.0}, 'K': {'k': 0.6666666666666666, 'x': 0.3333333333333333}, 'S': {'_': 0.5, 's': 0.5}})

“e”保持不变,即 1.0/1 = 1.0。 “K”的值为 0.66666 和 0.33333,因为 2/3 = 0.66666 且 1/3 = 0.3333333。 “S”的值为 0.5 和 0.5,因为对于它们每个来说 1/2=0.5。返回字典中的概率必须始终为一。

到目前为止我有这个:

from collections import defaultdict   

my_dict = default(dict, {"K": {"k": 2, "x": 1.0}, "S": {"_":1.0, "s":1}, "EH": {"e":1.0}})

def dict_probability(my_dict):

return_dict = defaultdict(dict)

for key, value in my_dict.items():
for k, v in values.items():

我还想让它适用于如下所示的默认字典:

    dict_two = defaultdict(dict, {('EH', 't'): {'e': 2}, ('N', 'e'): {'ne': 1, 'n': 2}})

其中的键中只包含字符,我希望它们以相同的方式返回。

我只是不确定应该如何正确执行此操作。任何帮助将不胜感激。

我也想在每次调用该函数时执行此操作:

    >>>my_dict = default(dict, {"K": {"k": 2, "x": 1.0}, "S": {"_":1.0, "s":1}, "EH": {"e":1.0}})
>>>dict_probability(my_dict)
>>>print(m_dict)
defaultdict(<class 'dict'>, {'EH': {'e': 1.0}, 'K': {'k': 0.6666666666666666, 'x': 0.3333333333333333}, 'S': {'_': 0.5, 's': 0.5}})

我希望 dict_probability 函数也返回 None

最佳答案

您基本上需要对值求和,然后除以每个子项的单独值。

result = defaultdict(dict)

for bigkey, d in yourdict.values():
# bigkey="K", d={"k": 2, "x": 1.0}, ...
total = sum(d.values())
# d.values() == [2, 1.0]
for k,v in d.items():
# k="k", v=2, ...
result[bigkey][k] = v / total
# result["K"]["k"] = 3 / 2

如果你不考虑 future 的程序员,这可以在一个非常丑陋的字典组合中完成。

result = defaultdict(dict).update({bigkey: {k: v / sum(d.values()) for k,v in d.items()} for bigkey,d in yourdict.items()})

关于python - 在字典中访问字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36949055/

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