首页 > 解决方案 > 如何使用相应的键值重命名字典中的值?

问题描述

我有一本看起来像这样的字典:

{
  '6690_team': [6620, 6689], 
  '6620_mdas': [6192, 6573], 
  '6573_megan': [6535, 6572], 
  '6572_regionalise national league north': [6567, 6570], 
  '6570_sacha baron cohen': [6551, 6569], 
  '6569_sacha baron cohen': [6380, 6568], 
  '6568_first week': [6555, 6566]
}

如何使用相应键的名称重命名值?例如,键6690_team有两个值:66206689。但6620_mdas也是带有前缀的键6620,所以我想重命名具有该值作为前缀的第一个键的值(6620在键的数组中)。6690_team

所以它会变成:

{
  '6690_team': [6620_mdas, 6689]
}

这会发生在其他键上,所以最终的字典看起来像:

{
  '6690_team': ['6620_mdas', '6569_sacha baron cohen'], 
  '6620_mdas': [6192, '6573_megan'], 
  '6573_megan': [6535, '6572_regionalise national league north'], 
  '6572_regionalise national league north': [6567, '6570_sacha baron cohen'], 
  '6570_sacha baron cohen': [6551, '6569_sacha baron cohen'], 
  '6569_sacha baron cohen': [6380, '6568_first week'], 
  '6568_first week': [6555, 6566]
}

标签: pythonlist

解决方案


尝试:

dct = {
    "6690_team": [6620, 6689],
    "6620_mdas": [6192, 6573],
    "6573_megan": [6535, 6572],
    "6572_regionalise national league north": [6567, 6570],
    "6570_sacha baron cohen": [6551, 6569],
    "6569_sacha baron cohen": [6380, 6568],
    "6568_first week": [6555, 6566],
}

tmp = {int(k.split("_")[0]): k for k in dct}

for v in dct.values():
    v[:] = [tmp.get(i, i) for i in v]

print(dct)

印刷:

{
    "6690_team": ["6620_mdas", 6689],
    "6620_mdas": [6192, "6573_megan"],
    "6573_megan": [6535, "6572_regionalise national league north"],
    "6572_regionalise national league north": [6567, "6570_sacha baron cohen"],
    "6570_sacha baron cohen": [6551, "6569_sacha baron cohen"],
    "6569_sacha baron cohen": [6380, "6568_first week"],
    "6568_first week": [6555, 6566],
}

推荐阅读