Возвращение словаря чисел из функции в Python - PullRequest
0 голосов
/ 11 января 2012

Я хочу вернуть словарь элементов, присвоив каждому значению списка значение «лайк», но я продолжаю выдавать ошибку.Это мой код.

def f([a,b,c]):
    d={a:'like'}
    for x in [a,b,c]:
        d[x]='like'
    return d

Ответы [ 4 ]

5 голосов
/ 11 января 2012

dict.fromkeys - это удобный конструктор для этого:

>>> dict.fromkeys([1,2,3], 'like')
{1: 'like', 2: 'like', 3: 'like'}
4 голосов
/ 11 января 2012

Я думаю, что это то, что вы хотите сделать:

def f(my_list):
    return dict((x, "like") for x in my_list)

Пример:

>>> f([1, 2, 3])
{1: 'like', 2: 'like', 3: 'like'}

В Python 2.7 или выше эта функция также может быть записана как

def f(my_list):
    return {x: "like" for x in my_list}

Относительно вашего исходного кода: нет такого синтаксиса, как def f([a, b, c]). Я могу только догадываться, что это должно означать, в списке параметров нет квадратных скобок. Если вы хотите передать список, используйте один параметр.

В обновленной версии кода другие ошибки были удалены. Инициализация d все еще странная, так как было бы достаточно использовать пустой словарь:

d = {}
1 голос
/ 11 января 2012

Выше Python 2.7 вы могли бы вникнуть:

>>> my_list = [1, 2, 3,]
>>> {i: 'like' for i in my_list}
{1: 'like', 2: 'like', 3: 'like'}

Редактировать: похоже, @SvenMarnach отредактировал свой комментарий, когда я его печатал.

0 голосов
/ 11 января 2012

Я не уверен, что вы пытаетесь сделать, но, может быть, это что-то вроде этого:

def f(lst):
    d = {}
    for x in lst:
        d[x] = 'like'
    return d

если это вы можете сделать это или лучше:

>>> lst = ['a', 'b', 'c']
>>> dict((x, 'like') for x in lst)
{'a': 'like', 'b': 'like', 'c': 'like'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...