2017-03-15 1 views
0

Der Codeerhalten den Namen eines Wörterbuchs

a={'k1':['a',2,3]} 
b={'k2':[2,'b',4]} 
for i in [a,b]: 
    print(i) 

druckt den Wert von a und b. Aber was eigentlich wollte ich es den Wörterbuch-Namen zu drucken, das heißt

a 
b 

Meine aktuelle Lösung ist dies:

a={'k1':['a',2,3]} 
b={'k2':[2,'b',4]} 
for i in [a,b]: 
    if i is a: 
     print('a') 
    elif i is b: 
     print('b') 

Gibt es einen besseren Ansatz?

+0

Wenn Sie sie anders behandeln möchten, warum fügen Sie sie sogar in ein Array ein und schleifen sie? Klingt nach schlechtem Design. – RvdK

+4

Was machst du wirklich hier? Warum brauchst du den * Variablennamen *? Diese Art von Frage taucht regelmäßig auf und es gibt normalerweise keinen guten Grund, dies zu wollen, das Problem kann immer auf eine viel bessere Weise gelöst werden. – deceze

+0

@deceze In der Tat wird das Wörterbuch verwendet, um in Pandas zu gruppieren. Der Name wird verwendet, um die Daten wie folgt zu unterteilen: data [data.col1 == name] – pang2016

Antwort

2

Es gibt keine Möglichkeit, den Namen eines Wertes zu erhalten. Es ist auch nie nötig.

Namen beziehen sich auf Werte. Viele Namen können sich auf denselben Wert beziehen. Daher kann es für ein gegebenes Objekt keinen "wahren Namen" geben, da alle Namen gleich sind.

Betrachten

>>> x = 5 
>>> y = x 
>>> x is y 
True 

Nun, was ist der Namen des Wertes 5? Es ergibt keinen Sinn.

Betrachten

>>> x = [1,2,3] 
>>> y = x[:] # shallow copy of x 
>>> x is y 
False 

Nun, was ist der Namen der Liste [1,2,3], die doppelt vorhanden ist? Es ergibt keinen Sinn.

Wenn Sie Ihren Wörterbüchern unbedingt einen dauerhaften Namen geben möchten, fügen Sie sie als Schlüssel/Wert-Paar hinzu, z.

>>> mydic = {1:2, 'name':'Bob'} 
>>> mydic['name'] 
'Bob' 

Aber überlegen Sie genau, warum Sie das wirklich tun wollen. Die Chancen stehen gut, dass Sie es nicht einmal wollen.

Verwandte Themen