python如何将dic值与列表项匹配

2024-06-09 00:16:49 发布

您现在位置:Python中文网/ 问答频道 /正文

countr={'517132': 2017, '1002063365': 116, '226022': 34, '51002': 3, '219006': 117, '222034': 45, '224032': 42, '517195': 103, '731120': 1516
'3254':12,'456':11}

r1=[224032, 517132, 226022, 1002063365, 222034, 219006, 517195, 35015, 731120, 51002]
r={}
for i in r1:
r[i]=countr.get(i)

我在试着做新的dic 我的意思是如果countr键和r1值匹配

添加新的dic r值作为键,countr匹配的值作为值。 但当我学习这个代码时,结果是没有。你知道吗

'224032':None, '517132'=None....'1002063365':None]

有没有办法把dic值和列表匹配起来? 这是我想要的结果

r=[517132': 2017, '1002063365': 116, '226022': 34, '51002': 3, '219006': 117, '222034': 45, '224032': 42, '517195': 103, '731120': 1516]

Tags: 代码innone列表forgetr1办法
2条回答

如果我做对了,这就是你想要的:

countr={'517132': 2017, '1002063365': 116, '226022': 34, '51002': 3, '219006': 117, '222034': 45 ,'224032': 42, '517195': 103, '731120': 1516,
'3254':12,'456':11}

r1=[224032, 517132, 226022, 1002063365, 222034, 219006, 517195, 35015, 731120, 51002]
r={}
for key in countr:
  if key in str(r1):
    r[key]=countr[key]

print(r)

输出: {'517132': 2017, '1002063365': 116, '226022': 34, '51002': 3, '219006': 117, '222034': 45, '224032': 42, '517195': 103, '731120': 1516}

您可能还需要重新考虑r1是int还是sting到很多字典值

您应该迭代列表元素:

countr = {'517132': 2017, '1002063365': 116, '226022': 34, '51002': 3, '219006': 117,
          '222034': 45, '224032': 42, '517195': 103, '731120': 1516, '3254': 12, '456': 11}

r1 = [224032, 517132, 226022, 1002063365,
      222034, 219006, 517195, 35015, 731120, 51002]

print({k: countr[str(k)] for k in r1 if str(k) in countr})
# {224032: 42, 517132: 2017, 226022: 34, 1002063365: 116, 222034: 45, 219006: 117, 517195: 103, 731120: 1516, 51002: 3}
print({k: countr.get(str(k)) for k in r1})
# {224032: 42, 517132: 2017, 226022: 34, 1002063365: 116, 222034: 45, 219006: 117, 517195: 103, 35015: None, 731120: 1516, 51002: 3}

这样更快更健壮。接受的答案将失败,示例如下:

countr={'1': 2017, '2': 116}
r1=[12]

相关问题 更多 >