python - 需要在python中以不同格式从现有字典创建新字典
问题描述
我原来的字典是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
方法巧妙地完成。
因为 from 的返回值setdefault
要么是我们刚刚创建的新列表,要么是已经填充的列表(在对的情况下'Output.txt'
),而且列表是可变的(对它们的更改会影响对它们的所有引用),我们可以只附加我们的键 ( 'Input.txt'
, 'Code.py'
, 'Output.txt'
) 直接返回任何返回的内容,无论是新的还是旧的。
推荐阅读
- python - 如何删除应用程序选项卡周围的白线?
- python - (ddd mm.m)的手动输入转换为弧度或十进制度?在蟒蛇
- android - 当我尝试解析布局时,我得到 android.content.res.Resources$NotFoundException: Resource ID #0x0
- python - 在 Tensorflow 2 中使用 NON-TFRecord 协议缓冲区
- angular - 如何在动态显示列单元格值的情况下有条件地更改 mat-cell 行的内容
- pandas - 创建“指数平滑”变量 - Pandas
- debugging - 在本地机器上调试驱动程序
- c# - C# Winforms 具有单独自动滚动的多个面板
- javascript - 如何调用 Javascript 到 c#
- azure-data-factory - 如何过滤我的源数据集以仅将特定值复制到我的接收器?