Pytanie Jak uzyskać klucz słownika jako zmienną bezpośrednio w Pythonie (a nie przez wyszukiwanie wartości)?


Przepraszam za to podstawowe pytanie, ale moje wyszukiwania w tym przypadku nie pokazują niczego poza tym, jak zdobyć klucz słownika w oparciu o jego wartość, której wolałabym nie używać, ponieważ chcę po prostu tekstu / nazwy klucza i obawiam się, że wyszukiwanie według wartości może skończyć się zwracaniem 2 lub więcej kluczy, jeśli słownik ma dużo wpisów ... próbuję to zrobić:

mydictionary={'keyname':'somevalue'}
for current in mydictionary:

   result = mydictionary.(some_function_to_get_key_name)[current]
   print result
   "keyname"

Powodem tego jest to, że drukuję je do dokumentu i chcę użyć nazwy klucza i wartości w tym zakresie

Widziałem metodę poniżej, ale wydaje się, że po prostu zwraca wartość klucza

get(key[, default])

146
2017-08-23 07:01


pochodzenie


Czy chcesz tylko sprawdzić, czy "nazwa klucza" istnieje w słowniku? Ponieważ ty zrobić już to masz. - relet
nie, jak już powiedziałem, trzeba to wydrukować, byłoby to iterowanie przez dużą liczbę kluczy - Rick
currentjest bieżącym kluczem, po prostu rób print current - Moberg
W jaki sposób uzyskasz tylko 1. klucz w słowniku? (bez iteracji) - VISQL


Odpowiedzi:


Powinieneś powtórzyć klawisze za pomocą:

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])

195
2017-08-23 07:04



Możesz po prostu napisać for key in mydictionary: - blokeley
w python 3.6: print (f"key: {key}, value: {mydictionary[key]}") - JinSnow


Jeśli chcesz wydrukować klucz i wartość, skorzystaj z:

for key, value in my_dict.iteritems():
    print key, value

76
2017-08-23 07:05



W przypadku Python 3: items () zamiast iteritems () - toshiro92


Powodem tego jest to, że drukuję je do dokumentu i chcę użyć nazwy klucza i wartości w tym zakresie

W oparciu o powyższy wymóg sugeruję:

keys = mydictionary.keys()
keys.sort()

for each in keys:
    print "%s: %s" % (each, mydictionary.get(each))

69
2017-08-23 07:06



Wolę inne odpowiedzi, takie jak pętla for my_dict.item() lub rozumienie listy, jak keys = list(my_dict.keys) ale na wypadek, gdyby ktoś chciał to zrobić w Pythonie 3: (linia 2) keys = sorted(my_dict.keys()) + dodaj (), aby wydrukować. - Honiix


Jeśli słownik zawiera jedną parę:

d = {'age':24}

wtedy możesz zdobyć jako

field, value = d.items()[0]

W Pythonie 3.5 wykonaj następujące czynności:

key = list(d.keys())[0]

25
2017-07-24 09:39



Python3.5: TypeError: 'dict_items' object does not support indexing - Sinux
Całkiem hackish ale d .__ iter __ () .__ next __ () robi lewę. dostajesz "wiek". Ten wynik daje ten sam wynik: d.items () .__ iter __ () .__ next __ () [0]. - yoshi
W języku Python3 działa to w przypadku jednej pary: key = list(d.keys())[0] - Juha Untinen
Jeśli masz ogromny dykt, użyj next() jest lepszy według: stackoverflow.com/a/27638751/1488445 - Juha Untinen


keys=[i for i in mydictionary.keys()] lub keys = list(mydictionary.keys())


9
2017-12-30 17:18



Upewnij się, że używasz znaczników kodu i wyjaśnij swoją odpowiedź. - Chrismas007


Tak proste jak to:

mydictionary={'keyname':'somevalue'}
result = mydictionary.popitem()[0]

Będziesz słownika i powinieneś zrobić jego kopię


8
2017-11-22 03:20





Iterate over słownik (i) zwróci klucz, a następnie użyje go (i), aby uzyskać wartość

for i in D:
    print "key: %s, value: %s" % (i, D[i])

5
2018-02-27 03:20





W python 3 Jeśli chcesz uzyskać tylko klucze, użyj tego. Zastąp druk (klucz) drukiem (wartościami), jeśli chcesz wartości.

for key,value in my_dict:
  print(key)

3
2017-11-21 14:48