【问题标题】:Mapping of Data Fields数据字段的映射
【发布时间】:2021-10-13 06:21:23
【问题描述】:

我想映射两个字典。

这些是我的第一本字典中的键和值:

first = {
    "Name": " John Doe", 
    "Gender": "Male", 
    "Phone": "01 9672 0321",
    "Occupation": "Engineer",  
}

第二本词典:

second = {
    "First_Name": "Name",
    "Last_Name": "Name",
    "Gender": "Gender", 
    "Phone": "Phone",
    "Occupation": "Occupation",
}

输出应该是:

"FirstName": "John",
"LastName": "Doe",
"Gender": "Male", 
"Phone": "01 9672 0321",
"Occupation": "Engineer"

我是 Python 新手,我很困惑如何做到这一点。

【问题讨论】:

标签: python dictionary key mapping key-value-store


【解决方案1】:
>>> d1 = { "Name": " John Doe", "Gender": "Male", "Phone": "01 9672 0321", "Occupation": "Engineer",
}
>>> d2 = { "First_Name": "Name", "Last_Name": "Name", "Gender": "Gender", "Phone": "Phone", "Occupation": "Occupation", }
>>> {k: d1[v] for k, v in d2.items()}
{'First_Name': ' John Doe', 'Last_Name': ' John Doe', 'Gender': 'Male', 'Phone': '01 9672 0321', 'Occupation': 'Engineer'}

【讨论】:

    【解决方案2】:

    由于您的数据有点奇怪,因此必须进行一些硬编码(您在第二个字典中有“First_Name”但想要“FirstName”等...)

    John Doe 开头有一个空格(我想这是一个错误...)

    这段代码正是你想要的:

    data1 = { "Name": "John Doe", "Gender": "Male", "Phone": "01 9672 0321", "Occupation": "Engineer",}
    
    data2 = { "First_Name": "Name", "Last_Name": "Name", "Gender": "Gender", "Phone": "Phone", "Occupation": "Occupation", }
    
    data3 = {}
    for key in data2.keys():
        if key == 'First_Name':
            data3['FirstName'] = data1[data2[key]].split(' ')[0]
        elif key == 'Last_Name':    
            data3['LastName'] = data1[data2[key]].split(' ')[1]
        else:
            data3[key] = data1[key]
    

    【讨论】:

      【解决方案3】:

      coyote 对代码的一些修复

      for key in b.keys():
          if key == 'First_Name':
              c['FirstName'] = a[b[key]].split(' ')[1]
          elif key == 'Last_Name':
              c['LastName'] = a[b[key]].split(' ')[2]
          else:
              c[key] = a[key]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 2012-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-04
        • 2020-04-17
        相关资源
        最近更新 更多