我正在尝试编写一个函数:
但是,我的功能必须返回无。 例如,如果我有字典:
defaultdict(dict, {'M': {'e': 1.0}, 'O': {'n': 2, 'x': 1.0}, 'I': {'_': 1.0, 's': 1}, 'P': {'t': 3}, 'L': {'ne': 1, 'n': 1.0}})
因此,对于示例字典,转换后的字典输出将为:
defaultdict(<class 'dict'>, {'M': {'e': 1.0}, 'O': {'n': 0.6666666666666666, 'x': 0.3333333333333333}, 'I': {'_': 0.5, 's': 0.5}, 'P': {'t': 1.0}, 'L': {'ne': 0.5, 'n': 0.5}})
另一个例子,如果我有字典:
defaultdict(dict, {('H', 't'): {'m': 2}, ('M', 'o'): {'ce': 1, 'p': 2}, ('K', '^'): {'d': 2}, ('F', 'x'): {'_': 1, 'g': 3}, ('J', 'o'): {'y': 1}, ('A', 'b'): {'k': 3}, ('X', '_'): {'r': 1}, ('N', 'e'): {'x': 1}})
转换后的字典将是:
defaultdict(<class 'dict'>, {('M', 'o'): {'ce': 0.3333333333333333, 'p': 0.6666666666666666}, ('K', '^'): {'d': 1.0}, ('F', 'x'): {'g': 0.75, '_': 0.25}, ('J', 'o'): {'y': 1.0}, ('H', 't'): {'m': 1.0}, ('A', 'b'): {'k': 1.0}, ('X', '_'): {'r': 1.0}, ('N', 'e'): {'l': 1.0}})
我该怎么做呢?如何访问字典的defaultdict中的键。我目前的想法是:
for major_key in dictionary:
dictionary[major_key]...
......那就是我被困住的地方。
非常感谢任何帮助!
答案 0 :(得分:0)
除了能够遍历字典中的键之外,在Python中,您还可以迭代键值元组或仅仅值。所以我们可以这样做:
cap install
这应该有助于为您提供所需的结果。请注意,在Python 2中,您应该调用for major_key, sub_dict in d.items():
total_key_count = 0
# Add up all sub key values to calculate probabilities
for sub_count in sub_dict.values():
total_key_count += sub_count
# Now update nested dictionary values accordingly
for minor_key, sub_count in sub_dict.items():
sub_dict[minor_key] = sub_count / total_key_count
而不是iteritems()
,因为在Python 2中items()
实际上构建了一个tupes列表,而不是返回像items()
这样的迭代器。与iteritems()
和values()
相同。