python - 需要在python中以不同格式从现有字典创建新字典

标签 python python-3.x

我原来的字典是dict1。

dict1={'Input.txt':'Randy','Code.py':'Stan','Output.txt':'Randy'}

我需要如下输出

{'Randy':['Input.txt','Output.txt'],'Stan':['Code.py']}

最佳答案

熟练的 Python 技能:

dict1 = {'Input.txt':'Randy','Code.py':'Stan','Output.txt':'Randy'}
out = {}
for k, v in dict1.items():
    out.setdefault(v, []).append(k)

给出预期:

{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}

因此,我们通过解包字典 .items() 方法返回的元组来同步迭代键值对。对于每一对,我们将值(即 'Randy''Stan''Randy')设置为新列表的键如果那里还没有列表,则在输出字典中 - 这可以使用 setdefault 方法巧妙地完成。

因为 setdefault 的返回值要么是我们刚刚创建的新列表,要么是已经填充的列表(在 'Output.txt' 对的情况下)由于列表是可变的(对它们的更改会影响对它们的所有引用),我们只需附加我们的键('Input.txt''Code.py' , 'Output.txt') 直接返回任何,无论是新的还是旧的。

关于python - 需要在python中以不同格式从现有字典创建新字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52880806/

相关文章:

python - 无需安装即可使用 nltk

python - Tkinter "entry"对象未更新 textvariable 变量(Python 3.4)

python - 列名称中存在未知字符

python - 在 tkinter 中是否可以有两列标签,其中一个标签位于下方和中间?

python - scikit-learn 中的accuracy_score 与 Keras 中的accuracy 之间的区别

python子进程一个一个运行

python - 在字符串中获取 dis.dis() 的结果

python - 是否可以在python中的@property setter中设置其他属性

python - 从字典列表中的字典中删除键

Python 等价于 Haskell 的 [1..](索引列表)