Python 3.x 通过将用户输入存储在dic中,交换字典中的键和值 首先,输入应为DIC长度,考虑3。然后,dic的输入是由空格i、e分隔的键和值 “A 1 B 2 C 1“ 现在dic={A:1,B:2,C:1} 首先,应交换键和值,如果有相同的键和值,则应将其合并到列表中并分配给相同的键,如下所示。(这些程序应适用于任何长度的字典)

Python 3.x 通过将用户输入存储在dic中,交换字典中的键和值 首先,输入应为DIC长度,考虑3。然后,dic的输入是由空格i、e分隔的键和值 “A 1 B 2 C 1“ 现在dic={A:1,B:2,C:1} 首先,应交换键和值,如果有相同的键和值,则应将其合并到列表中并分配给相同的键,如下所示。(这些程序应适用于任何长度的字典),python-3.x,Python 3.x,输出应该是dicout={1:['A','C'],2:B} 谢谢。定义: from collections import defaultdict def make_dict(s): d = defaultdict(list) xs = s.split(" ") for k, v in zip(xs[1::2], xs[::2]): d[k].append(v) for k, v in d.items():

输出应该是dicout={1:['A','C'],2:B}


谢谢。

定义:

from collections import defaultdict

def make_dict(s):
    d = defaultdict(list)
    xs = s.split(" ")

    for k, v in zip(xs[1::2], xs[::2]):
        d[k].append(v)

    for k, v in d.items():
        if len(v) == 1:
            d[k] = v[0]

    return dict(d)
>>> make_dict("A 1 B 2 C 1")
{'1': ['A', 'C'], '2': 'B'}
用法示例:

from collections import defaultdict

def make_dict(s):
    d = defaultdict(list)
    xs = s.split(" ")

    for k, v in zip(xs[1::2], xs[::2]):
        d[k].append(v)

    for k, v in d.items():
        if len(v) == 1:
            d[k] = v[0]

    return dict(d)
>>> make_dict("A 1 B 2 C 1")
{'1': ['A', 'C'], '2': 'B'}