2016-02-09 3 views
-1

Я ищу способ определения ключей словаря по функциональным параметрам. В приведенном ниже коде я делаю разделы первой и второй букв словарных клавиш, но параметры функции Python не являются строками.Итерация объекта «функция»

def x(a, b, c): 
    dict = {'ab': 0, 'ac': 0, 'bc': 0} 

    for d, e in dict.keys: 
     dict[de] = d/e 

x(10, 20, 30) 
+3

Эмм, что? Пожалуйста, дайте полный пример того, чего вы пытаетесь достичь, с помощью ввода и вывода. Я вообще не понимаю ваш вопрос. Это имя функции x также не очень описательно. – timgeb

+0

Почему бы просто не перевести словарь на 'x'? – SuperBiasedMan

+1

Вы не можете разделить буквы буквами. Что вы ожидаете от результата? –

ответ

0

Вот код, который будет обрабатывать любое количество аргументов. Сначала он сортирует имена аргументов в алфавитном порядке. Затем он создает все пары аргументов и выполняет деления (со значением более раннего arg в алфавитном порядке, делящимся на значение более позднего), сохраняя результаты в dict, с ключами dict, которые строятся с помощью конкатенация имен аргументов. Функция возвращает построенный dict, но, конечно, в вашем коде вы можете выполнить дальнейшие действия над ним.

from itertools import combinations 

def ratios(**kwargs): 
    pairs = combinations(sorted(kwargs.keys()), 2) 
    return dict((p + q, kwargs[p]/kwargs[q]) for p, q in pairs) 

print(ratios(a=600, b=3, c=2))  

выход

{'ac': 300.0, 'ab': 200.0, 'bc': 1.5} 
Смежные вопросы