Powiedzmy, że mam słownik i niektóre klucze są wartościami w oddzielnej tablicy. Jak posortować wartości w mojej tablicy według wartości odpowiadających im kluczy w słowniku?

Na przykład:

Wejście:

dict = {'a': 4, 'b': 7, 'c': 10, 'd': 1}
array = [a, b, d]

Wynik:

array = ['d', 'a', 'b']

Kolejność wartości w tablicy wyjściowej to „d” jako pierwsza, ponieważ jej wartość w słowniku była najniższa (1). Po nim następuje „a” (4) i „b” (7). Celowo nie umieściłem litery „c” w tablicy.

Nie proszę o rozwiązanie tego algorytmu

Pytam, czy istnieje prosty wbudowany sposób, aby to zrobić, na przykład za pomocą funkcji typu sorted(array, key= ).

0
JAVABB 3 kwiecień 2020, 04:37

3 odpowiedzi

Najlepsza odpowiedź

Myślę, że o co prosisz:

>>> d = {'a': 4, 'b': 7, 'c': 10, 'd': 1} 
>>> a = ['a', 'b', 'd']
>>> sorted(a, key=d.get)
['d', 'a', 'b']
2
wim 3 kwiecień 2020, 01:41

Tak, możesz użyć funkcji lambda, która zwraca wartość odpowiedniego elementu ze słownika.
Swoją drogą, myślę, że nie jest dobrą praktyką używanie słowa „dict” do nazw zmiennych, ponieważ jest to słowo wbudowane w Pythonie.

print(sorted(array, key=lambda x: a_dict[x]))
0
user13204959user13204959 3 kwiecień 2020, 01:46

Możesz spróbować: dict = {'a': 4, 'b': 7, 'c': 10, 'd': 1} array = ["a", "b", "d"]

new_dict = sorted(dict.items(), key=lambda x: x[1])

output_array = []
for key, value in new_dict:
    check_values = key in array
    if(check_values == True):
        output_array.append(key)

print(output_array)`
0
Elmar 3 kwiecień 2020, 02:08