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

python如何将dic值与列表项匹配,python,dictionary,Python,Dictionary,我想做一个新的dic 我的意思是如果countr键与r1值匹配 添加新的dic r值作为键,countr匹配值作为值。 但当我学习这段代码时,结果是没有 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

我想做一个新的dic 我的意思是如果countr键与r1值匹配

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

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值与列表匹配? 这是我想要的输出

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

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

r=[517132': 2017, '1002063365': 116, '226022': 34, '51002': 3, '219006': 117, '222034': 45, '224032': 42, '517195': 103, '731120': 1516]
输出:
{'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]
r={}
for key in countr:
  if key in str(r1):
    r[key]=countr[key]

print(r)
这种方式更快、更健壮。接受的答案将在以下示例中失败:

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}

您的
dict
键是字符串。。。这就是失败的原因。你能建议我怎么做吗?你应该弄清楚你是想使用字符串还是int,然后使用合适的一个…另外,你的示例输出不是有效的Python文本。。。这似乎意味着你想在最后的
dict
中也使用字符串作为键。我想使用字符串,你能给我举个例子吗?迭代
r1
而不是字典可能更有意义,而且如果str(r1)中有键,你应该使用
countr.get
,而不是浪费的列表成员资格测试如果
countr
键是r1元素的子字符串,则
将失败。
countr={'1': 2017, '2': 116}
r1=[12]