2017-05-20 5 views
0
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) 

ich versuche, neuen dic zu machen, was ich meine, wenn countr Schlüssel mit r1 WertPython, wie dic Wert mit Listenelementen entsprechen

in neuem dic r-Wert als Schlüssel hinzufügen abgestimmt ist und angepasst CountR Wert als Wert aber wenn ich dieses Codeergebnis lerne, ist None.

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

Gibt es eine Möglichkeit, dic Wert mit Liste übereinstimmen? und dies ist meine gewünschte Ausgabe

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

Ihre 'dict' Schlüssel sind Zeichenketten ... deshalb schlägt das fehl. –

+0

können Sie mir vorschlagen, was zu tun ist? –

+0

Sie sollten herausfinden, ob Sie Zeichenfolgen oder Ints verwenden möchten, und verwenden Sie dann die entsprechende ... –

Antwort

0

Wenn ich es richtig das ist, was Sie wollen:

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) 

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

Sie auch zu überdenken müssen, wenn r1 int Oder stechen Sie zu vielen Wörterbuchwerten

+0

Es macht wahrscheinlich mehr Sinn, über 'r1' anstelle des Wörterbuchs und stattdessen zu iterieren von der verschwenderischen Liste-Mitgliedschaft Test, sollten Sie 'countr.get' –

+0

Danke !!!!! –

+0

'wenn Schlüssel in str (r1)' wird fehlschlagen, wenn ein 'countr'-Schlüssel eine Teilzeichenfolge eines r1-Elements ist. –

0

Sie sollten über die Listenelemente iterieren:

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} 

Es ist schneller und robuster auf diese Weise. Die angenommene Antwort würde mit diesem Beispiel fehlschlagen:

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