Hvis en mydict
ikke er tom, får jeg tilgang til et vilkårlig element som:
mydict[mydict.keys()[0]]
Finnes det en bedre måte å gjøre dette på?
På Python 3, ikke-destruktivt og iterativt:
next(iter(mydict.values()))
På Python 2, ikke-destruktivt og iterativt:
mydict.itervalues().next()
Hvis du vil at det skal fungere i både Python 2 og 3, kan du bruke pakken six
:
six.next(six.itervalues(mydict))
men på dette tidspunktet er det ganske kryptisk, og jeg foretrekker heller din kode.
Hvis du vil fjerne et element, er det bare å gjøre det:
key, value = mydict.popitem()
Legg merke til at "først" ikke er et passende begrep her. Dette er "any" element, fordi dict
ikke er en ordnet type.
Som andre har nevnt, finnes det ikke noe "første element", siden ordbøker ikke har noen garantert rekkefølge (de er implementert som hashtabeller). Hvis du for eksempel vil ha verdien som tilsvarer den minste nøkkelen, vil thedict[min(thedict)]
gjøre det. Hvis du bryr deg om rekkefølgen nøklene ble satt inn i, dvs. at du med "først" mener "satt inn tidligst", kan du i Python 3.1 bruke collections.OrderedDict, som også finnes i den kommende Python 2.7; for eldre versjoner av Python kan du laste ned, installere og bruke backporten for ordered dict (2.4 og nyere) som du finner her.
Python 3.7. Nå er dikter ordnet etter innsetting.
Hvis vi ser bort fra problemene rundt diktatbestilling, kan dette være bedre:
next(dict.itervalues())
På denne måten unngår vi varesøk og generering av en liste med nøkler som vi ikke bruker.
next(iter(dict.values()))