如何重新映射 python 字典键

2024-01-06

我正在开发一个程序,该程序(除其他外)读取 CSV 文件(它以以下形式存储为字典数组)[{col1:data1a,col2:data2a},{col1:data1b,col2:data2b}])。对于每一行,作为其他处理的一部分,我需要将这些键重新映射到用户输入的值,这些值在另一个字典中提供,以便它们可以用作 API 调用中的参数。映射数组的形式为:{badname1:goodname1, badname2:goodname2,...}.

所以我想从:

{badname1:data1, badname2:data2,...}` to `{goodname1:data1, goodname2:data2,...}

我想用类似的东西zip()(虽然zip() yields {badname1:badname1,...}).

似乎应该有一个明显的解决方案来暗示我。

如果数据在a和映射b:

dict(zip(b,a.itervalues()))

我很接近,但它仅在已知字段的顺序与我认为的顺序相同的情况下才有效。


name_map = {'oldcol1': 'newcol1', 'oldcol2': 'newcol2', 'oldcol3': 'newcol3'...}

for row in rows:
    # Each row is a dict of the form: {'oldcol1': '...', 'oldcol2': '...'}
    row = dict((name_map[name], val) for name, val in row.iteritems())
    ...

或者在Python2.7+中使用字典理解 http://www.python.org/dev/peps/pep-0274/:

for row in rows:
    row = {name_map[name]: val for name, val in row.items()}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重新映射 python 字典键 的相关文章

随机推荐