2012-01-11 84 views
-3

我想通過將列表的每個值賦給「like」來返回一個元素字典,但我一直想出錯。這是我的代碼。返回python中函數的數字字典

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

「錯誤「 - 想更具體? – 2012-01-11 14:43:44

+0

我想我可能知道這個問題,有沒有辦法將列表轉換爲元組? – user1111042 2012-01-11 14:43:59

+2

您的代碼有多個錯誤,包括語法錯誤和邏輯錯誤。什麼特別的錯誤信息給你? – 2012-01-11 14:44:27

回答

4

我的猜測是,這是你想要做什麼:

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} 

關於你的ori ginal code:沒有這樣的語法def f([a, b, c])。我只能猜測這是什麼意思,參數列表中沒有方括號。如果您想傳入列表,請使用單個參數。

在代碼的更新版本中,其他錯誤已被刪除。的d初始化仍然是陌生的,因爲這將是足夠用了一個空的字典:

d = {} 
5

dict.fromkeys是這樣的便捷構造:

>>> dict.fromkeys([1,2,3], 'like') 
{1: 'like', 2: 'like', 3: 'like'} 
1

以上的Python 2.7,你可以做一個字典的理解:

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

編輯:看起來像@SvenMarnach編輯他的評論,因爲我正在打字。

0

我不知道什麼是你想這樣做,但它也許是這樣的:

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'}