#python #dictionary #list-comprehension #networkx
#python #словарь #список-понимание #networkx
Вопрос:
У меня есть словарь значений degree centrality с ключами, deg_c:
{1: 0.026501766784452298,
2: 0.020318021201413426,
3: 0.03356890459363958,
4: 0.019434628975265017,
5: 0.0088339222614841,
...}
и я нашел ключ для максимального значения следующим образом
def f1():
deg_c = nx.degree_centrality(G1)
degree_value = max([v for k,v in deg_c.items()])
degree_node = [k for k,v in deg_c.items() if v == degree_value]
return degree_node[0]
он возвращает ключ 105 из кортежа (105, 0.0636042402826855).
однако здесь я дважды использую понимание списка. как я могу записать это в одну строку? должен быть лучший способ .. спасибо. : o)
Ответ №1:
Используйте ключевой аргумент max .
max(my_dict.items(), key=lambda x: x[1])[0]
И чтобы ускорить это, вы можете использовать operator.itemgetter
from operator import itemgetter
max(my_dict.items(), key=itemgetter(1))[0]
Комментарии:
1. @DavidFelipeMedinaMayorga — эти ответы были опубликованы примерно в одно и то же время. Ваш не прав … iteritems предназначен для python 2 — и у этого есть два варианта. Итак, они не совпадают.
2. как интересно, я не знал о itemgetter() . спасибо, Jab!