Effiziente Extraktion von First/Nur Schlüssel in einem WörterbuchPython

Python-Programme
Anonymous
 Effiziente Extraktion von First/Nur Schlüssel in einem Wörterbuch

Post by Anonymous »

Annahme ist, dass wir ein Wörterbuch haben, das genau ein Schlüssel-/Wertpaar enthält. Ziel ist es, den einzigen Schlüssel zu extrahieren. < /P>
Ich kann mir vier Möglichkeiten vorstellen (es kann mehr sein).

Code: Select all

import timeit

def func1(d):
"""
Convert to a list and return the first element
"""
return list(d)[0]

def func2(d):
"""
Unpack
"""
rv, *_ = d
return rv

def func3(d):
"""
Classic efficient approach
"""
return next(iter(d))

def func4(d):
"""
Appears to be faster than the classic approach
"""
for key in d:
return key

if __name__ == "__main__":
d = {"foo": 0}
for func in (func1, func2, func3, func4):
assert func1(d) == func(d)
duration = timeit.timeit(lambda: func(d), number=5_000_000)
print(func.__name__, f"{duration=:.4f}s")
Ausgabe:

Code: Select all

func1 duration=0.6322s
func2 duration=0.8306s
func3 duration=0.5505s
func4 duration=0.5040s
Ich habe immer verstanden, dass die Implementierung in func3 () optimal ist - und das würde ich normalerweise verwenden. Dies kann mit der Python -Version (3.13.5 in diesem Fall) zusammenhängen. Gibt es Optimierungen in modernen Python -Versionen, die dies beeinflussen würden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post