2017-07-18 33 views
0

我想從列表中取項目並將它們放入字典中。Python 2.7.3:從列表中取出一個項目,並將其設置爲字典中的一個鍵

假設我們有以下

carList = set(zip(carWordList, carWordFreq)) 

注:我使用設置刪除重複

所以卡洛斯將產生如下:

set([('merry', 3), ('cop', 25), ('completely', 21), ('jaw', 2), ('fiddle', 1), ('bright', 4), ('593', 1), ('asked', 22), ('additionally', 4), ('pretend', 1), ('beam', 4)]) 

現在我要帶的話(例如'merry'),並將它們作爲鍵的字典(newDic),數字作爲值。

此外,我想使用該新字典來創建另一個字典(otherDic),它有兩個鍵(一個是單詞(例如'merry'),另一個是「Car」,稍後將取值

for key in newDic: 
    otherDic = [key]["Car"] 

我試着做到以下幾點:

for key in carList: 
    otherDic = [key]["Car"] 

不過,我得到以下錯誤:

類型錯誤:列表索引必須是整數,而不是str的

+0

你似乎無法理解字典是如何工作的。字典不能有兩個鍵。 – DyZ

+0

爲什麼不改變'zip'命令,只使用'dict(carList)'? – Grimmy

+1

請添加樣本輸入和最終所需輸出。 – Rahul

回答

2

當你做到這一點

otherDic = [key]["Car"] 

你只是建立一個只包含key列表[key],然後你想索引它"Car"而不是整數,這就是爲什麼你會得到錯誤。

其次,你不能開始循環到這for key in newDic:而沒有創建newDic,我不認爲你在任何時候都在做。

無論如何,這是解決您的問題的錯誤方法。把你的set到字典中,你可以簡單地這樣做:

my_dict = {key: value for key, value in carList} 

這就是所謂的通過有道詞典的理解。但隨着@Adam史密斯指出,這實際上相當於

my_dict = dict(carList) 

這是簡單的......但在那之後,我不太明白您通過創建每個價值2把鑰匙另一個字典的意思。你不能用2個鍵創建一個字典,這不是他們的工作方式。你可以在這裏評論這個新字典的輸出結果,我會編輯我的答案。

-1

您可以使用字典解析:

In [61]: l = set([('merry', 3), ('cop', 25), ('completely', 21), ('jaw', 2), ('fiddle', 1), ('bright', 4), ('593', 1), ('asked', 22), ('additionally', 4), ('pretend', 1), ('beam', 4)]) 

In [63]: d = {k:v for k,v in l} 

In [64]: d 
Out[64]: 
{'593': 1, 
'additionally': 4, 
'asked': 22, 
'beam': 4, 
'bright': 4, 
'completely': 21, 
'cop': 25, 
'fiddle': 1, 
'jaw': 2, 
'merry': 3, 
'pretend': 1} 
相關問題