尝试倒转字典

我正在尝试将以下形式的初始字典反转:

Dict[str,list[str]] -> Dict[str,list[str]]

Example: INPUT: number_to_letter = {'1': ['A'],'2': ['B'],'3': ['B','D']}

OUTPUT expected: letter_to_number = {'A': ['1'],'B': ['2','3'],'D': ['3']}

代码:

inverted = {}

for old_key in key_to_value:
    new_key = key_to_value[old_key]

    if not (new_key in inverted):
        inverted[new_key] = [old_key]
    #o/w append old_key to existing list
    else:
        inverted[new_key].append(old_key)

这将导致:

Expected = Dict[str,list[str]]

Error received: TypeError: unhashable type: 'list'
rennig 回答:尝试倒转字典

无论您当前尝试使用new_key作为字典键,还是尝试使用tuple(new_key)tuple是可哈希的,因此可以用作字典键,而list不能,也不能。

,

如果没有很好的输入和输出示例,很难说出您要做什么。对您的问题的一种解释可能是:

key_to_value = {'2': ['A','B','C'],'3': ['B','C','D'],'4': ['C','D','E']}

inverted = {}

for old_key in key_to_value:
    new_keys = key_to_value[old_key]

    for new_key in new_keys:
        if new_key in inverted:
            inverted[new_key].append(old_key)
        else:
            inverted[new_key] = [old_key]

print(inverted)

输出

% python3 test.py
{'A': ['2'],'B': ['2','3'],'C': ['2','3','4'],'D': ['3','E': ['4']}
%
本文链接:https://www.f2er.com/3135502.html

大家都在问