如何将字典的键转为值并以索引作为新键?
问题
我有如下Python字典:
d={'Acconti imposta IRAP (EE)': ('Acconti di imposta IRAP (EE)', 'Acconti di imposta IRAP (EE)', 'Acconti di imposta IRAP (EE)'), 'Acconti imposta IRES (EE)': ('Acconti di imposta IRES (EE)', 'Acconti di imposta IRES (EE)', 'Acconti di imposta IRES (EE)'), 'Acquisti carburanti lubrificanti auto': ('Acquisti carburanti e lubrificanti auto', 'Acquisti carburanti e lubrificanti auto', 'Acquisti carburanti e lubrificanti auto'), 'Acquisto cancelleria': ('Acquisto cancelleria', 'Acquisto cancelleria', 'Acquisto cancelleria'), 'Acquisto materiali consumo': ('Acquisto materiali di consumo', 'Acquisto materiali di consumo', 'Acquisto materiali di consumo')}
需要将其转换为如下结构的字典:
d1={0: ('Acconti imposta IRAP (EE)','Acconti di imposta IRAP (EE)', 'Acconti di imposta IRAP (EE)', 'Acconti di imposta IRAP (EE)'), 1: ('Acconti imposta IRES (EE)','Acconti di imposta IRES (EE)', 'Acconti di imposta IRES (EE)', 'Acconti di imposta IRES (EE)'), 2: ('Acquisti carburanti lubrificanti auto', 'Acquisti carburanti e lubrificanti auto', 'Acquisti carburanti e lubrificanti auto', 'Acquisti carburanti e lubrificanti auto'), 3: ('Acquisto cancelleria', 'Acquisto cancelleria', 'Acquisto cancelleria', 'Acquisto cancelleria'), 4: ('Acquisto materiali consumo', 'Acquisto materiali di consumo', 'Acquisto materiali di consumo', 'Acquisto materiali di consumo')}
请问该如何实现?
解决方案
可以通过遍历原字典的键值对,结合enumerate生成索引,同时将原键添加到对应元组的开头,来构造目标字典。
方法一:字典推导式(简洁写法)
d1 = {idx: (key,) + value for idx, (key, value) in enumerate(d.items())}
核心逻辑:
enumerate(d.items())按顺序返回索引idx和原字典的键值对(key, value)(key,) + value将原键转为单元素元组后,与原值的元组拼接,得到目标格式的元组
方法二:显式循环构建(可读性更强)
d1 = {} for idx, (key, value) in enumerate(d.items()): d1[idx] = (key,) + value
Python 3.7及以上版本的字典会保留插入顺序,两种方法生成的d1都会和原字典的键顺序完全匹配,符合示例要求。
内容的提问来源于stack exchange,提问作者mal
相关产品推荐
相关产品推荐

