Как запустить много ключей через функцию Python - PullRequest
0 голосов
/ 13 октября 2018

У меня есть словарь Python, как этот mydict = {}

{5200:{'C1': 0.2, 'C2': 0.8, 'C3': 0.3}, 
 5201: {'C1': 0.0, 'C2': 0.8, 'C3': 0.2},
 5202: {'C1': 0.0, 'C2': 0.8, 'C3': 0.2},
...} 

Затем я создаю функцию, которая дает мне результат для каждого ключа, который я вставляю.

def myfunction() 

Чтобы получитьмои результаты я пишу

myfunction(mydict, 5200)

Можно ли вставить все мои ключи [5200, 5201, 5202, ..] в эту функцию, чтобы я мог получить список результатов?

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Вы должны использовать set для хранения выходов, поскольку словарные ключи не упорядочены:

{myfunction(mydict, k) for k in in mydict}

обратите внимание, что для использования набора требуются все выходы myfunction быть хэшируемым

Или, если вы хотите отсортировать ключи так, чтобы вывод представлял собой список результатов отсортированных ключей (то есть 5200, 5201 и т. д.):

[myfunction(mydict, k) for k in sorted(list(mydict.keys()))]
0 голосов
/ 13 октября 2018

Да, вы можете использовать список понимания для этого:

[ myfunction(mydict, key) for key in mydict ]

или вы можете использовать map(..):

from functools import partial

list(map(partial(myfunction, mydict), mydict))

Обратите внимание, что словари неупорядочено (до ), и, таким образом, ключи могут быть перечислены в каждом возможном порядке.Это не из-за способа, которым мы здесь итерируем по нему: когда вы сохраняете пары ключ-значение в словаре, то порядок «теряется» в словаре.

...