当前位置: 首页 > 面试题库 >

如何重新映射python dict键

章烨烨
2023-03-14
问题内容

我正在开发一个程序(除其他外),其中读取CSV文件(将它存储为dict形式的数组[{col1:data1a,col2:data2a},{col1:data1b,col2:data2b}])。对于每一行,作为其他处理的一部分,我需要将这些键重新映射到用户输入的值,这些值在另一个dict中提供,以便可以在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())
    ...

或在具有Dict理解力的Python2.7 +中:

for row in rows:
    row = {name_map[name]: val for name, val in row.items()}


 类似资料:
  • 这是日志: 谢谢

  • 在web应用程序上,我们使用Spring 3.2和Hibernate 4.1.1,并实现了一个类似插件的架构。插件可以在运行时添加和删除。对于每个模块,我们定义了一个单独的类加载器,并在spring上创建了单独的子应用程序上下文。完整的配置是使用注释完成的,不再需要对beans进行XML配置。 Spring Hibernate配置类 现在的问题是:一些插件包含自己的实体(DAO)类,这些类在运行时

  • 我使用.map()函数的方式与在其他项目中完全相同,但在我当前正在处理的项目中,它向我抛出了一个错误:这是我的代码(正如我提到的,它的结构在其他项目中也适用): 我想知道这是否与我在从外部库导入的组件内部进行映射有关。

  • 问题内容: 我有一个颜色枚举 我有包含它的MyEntity。 我已经有一个UserType来映射我的枚举。 您知道如何在Hibernate hbm.xml中映射枚举集吗? 我需要UserType还是最简单的方法? 谢谢 编辑: 只是为了说明一下,我正在寻找 hbm.xml 配置而不是@CollectionOfElements注释 问题答案: 我使用EnumSet映射线程中的解决方案,该解决方案依赖

  • 当前正在读取Head First Servlet JSP。我目前陷入了映射servlet。这可能是一个愚蠢的问题,但如何才能正确地映射servlet url模式呢?我正在使用eclipse mars,这是我第一次使用JSP/servlet。在创建动态web项目时,我总是检查generate web xml 这是默认web.xml中的内容 它使用这个来运行 但当我将其添加到显示名称下方时 它给我一个

  • 假设我有一组字符串和一个散列函数(或任何单边函数)和一个测试函数。我想用Java8流创建一个从输入字符串到通过测试函数的哈希值的映射。我的问题是如何在中编写? 看来老的for循环是最简洁的解决方案。