python - 缩短字典中键的长度
问题描述
我一直在尝试缩短字典的键。
这是d1
:
{
'A0Z40': [ 'A14160,A14161,A14162,A14163,A14164,A14165,A14166' ],
'A0Z41': [ 'A1403,A1407,A1408,A1409,A1410,A1411' ],
'A0Z42': [ 'A1201,A1205', 'A12041,A12042,A12043,A12044,A12045,A12046' ],
'A0Z43': [ 'A1101' ]
}
我试图得到这个:
{
'A0Z' : [ 'A14160,A14161,A14162,A14163,A14164,A14165,A14166' ],
[ 'A1403,A1407,A1408,A1409,A1410,A1411' ],
[ 'A1201,A1205', 'A12041,A12042,A12043,A12044,A12045,A12046' ],
['A1101']
}
我试过字典理解
d = {k[:3] : v for k, v in d.items() }
但它删除了值,因为字典只能有唯一的键......
您还有其他解决方案吗?
非常感谢
解决方案
您可以使用常规for
循环get
和默认值来执行此操作
d = {}
for k, v in d1.items():
d[k[:3]] = d.get(k[:3], []) + v
这会将值中的列表组合到键下的一个列表中'A0Z'
{'A0Z': ['A14160,A14161,A14162,A14163,A14164,A14165,A14166', 'A1403,A1407,A1408,A1409,A1410,A1411', 'A1201,A1205', 'A12041,A12042,A12043,A12044,A12045,A12046', 'A1101']}
如果您想将值作为列表列表,只需v
在每次迭代中将值放入列表中
d[k[:3]] = d.get(k[:3], []) + [v]
输出:
{'A0Z': [['A14160,A14161,A14162,A14163,A14164,A14165,A14166'], ['A1403,A1407,A1408,A1409,A1410,A1411'], ['A1201,A1205', 'A12041,A12042,A12043,A12044,A12045,A12046'], ['A1101']]}
推荐阅读
- javascript - How to do a "chroot jail" for Javascript?
- javascript - Incrementing index in mongo db
- atmega - Best practice to implement dual I2C busses on Atmel processors
- excel - 每次切换工作表 Excel VBA 时,基于动态范围的公式结果都会发生变化
- python - 使用 matplotlib 绘制并排图表
- spring-amqp - in memory amqp for dev and testing
- docker - 在多阶段 docker build 中复制 ffmpeg 箱
- reporting-services - Having one subreport bigger than the other subreport creates white space in the main report
- azure - What is the command for Enabling diagnostic logs on Azure AD with PowerShell?
- javascript - 为什么 catch 表现得像一个决心?