Twoje pytanie było najbardziej "pythonowe".
Myślę, że w przypadku takiego problemu, sposób Pythonic jest bardzo jasny. Istnieje wiele sposobów wdrożenia rozwiązania tego problemu! Jeśli naprawdę masz tylko 2 dykty, to rozwiązania, które zakładają to, są świetne, ponieważ są znacznie prostsze (i łatwiejsze do odczytania i utrzymania). Jednak często dobrym pomysłem jest posiadanie ogólnego rozwiązania, ponieważ oznacza to, że nie musisz duplikować większości logiki w innych przypadkach, gdy masz na przykład 3 słowniki.
Jako uzupełnienie, odpowiedź phant0m jest dobra, ponieważ wykorzystuje wiele funkcji Pythona, aby umożliwić odczytanie rozwiązania. Widzimy listowych:
[d[key] for d in dicts if key in d]
Korzystając z Pythona bardzo przydatny set
typu:
keys = set()
keys.update(d.keys())
i ogólnie, dobre wykorzystanie metod typu Pythona i globalnych:
d.keys()
keys.update(...)
keys.update
len(values)
myślenia i Wdrożenie algorytmu rozwiązania tego problemu to jedno, ale uczynienie go tak eleganckim i czytelnym dzięki wykorzystaniu siły języka jest tym, co większość ludzi uznałaby za "Python".
(użyłbym rozwiązanie phant0m za)
Polecam przy użyciu 'd2.copy () 'zamiast' dykt (d2) '. Jest trochę szybszy (i szybszy dla dykta z kilkoma przedmiotami, do około dwa razy szybszy), a moim zdaniem bardziej oczywisty. –
Chciałbym również pomnożyć przez 0.5 zamiast podziału. – psihodelia