如何按顺序将列表元素追加到Python单键多值字典的对应值列表
解决方案:按顺序将列表元素追加到字典的每个值列表末尾
嘿,要实现把列表x的元素按顺序追加到字典d每个键对应的列表末尾,其实很简单,用zip()函数把字典的键和x的元素一一配对,然后遍历追加就行。
完整代码示例
d = {'POU': ['KO', '0.9.8', '0.99', '0.54'], 'TAN': ['LA', '9', '7.5', '0.0'], 'EST': ['RA', '2', '6.5', '10.01']} x = [1, 2, 3] # 遍历配对后的键和数字,逐个追加 for key, num in zip(d.keys(), x): d[key].append(num) print(d)
代码解释
zip(d.keys(), x):Python 3.7及以上版本的字典会保留插入顺序,所以d.keys()会按'POU'、'TAN'、'EST'的顺序返回键,和x的[1,2,3]刚好一一对应,zip()会把它们打包成('POU',1)、('TAN',2)、('EST',3)这样的元组对。d[key].append(num):遍历每一对时,用append()方法把对应的数字追加到该键的列表末尾,直接修改原字典。
运行这段代码后,你就能得到目标字典啦:
{'POU': ['KO', '0.9.8', '0.99', '0.54', 1], 'TAN': ['LA', '9', '7.5', '0.0', 2], 'EST': ['RA', '2', '6.5', '10.01', 3]}
额外提示
如果你的字典键的数量和x的长度不一致,zip()会以较短的那个序列为准截断。要是需要处理这种情况(比如长度不匹配时抛出错误),可以用zip_longest()(从itertools模块导入),不过在你的问题场景里,两者长度刚好匹配,所以用zip()就足够啦。
内容的提问来源于stack exchange,提问作者user3650827
相关产品推荐
相关产品推荐

