2014-03-14 93 views
0

我想了解關於Python中的字典和列表。假設我有一個包含3個詞典的列表 Ex。 item_list = [price,stock,quantity]如何訪問Python中的列表中的字典元素

價格,庫存和數量是這裏的字典。每個字典有幾個鍵值對像

price = {'toys':25,'clothes':[12,15,20]} 

我知道訪問單個元素,我可以用一個for循環使用等指定的鍵:

for item in item_list: 
     print item['toys'] 

如何訪問的元素,而無需直接提到for循環中的關鍵?

+4

你爲什麼要這麼做? – Eenvincible

+0

你可以通過item.keys得到一個鍵列表() – sashkello

+0

@Eenvincible - 我會輸入這些值到其他變量。打印只是我給的一個例子。所以不想對密鑰進行硬編碼。 – Skanda

回答

0

您可以像遍歷列表一樣迭代字典。

for item in item_list: 
    for key in item: 
     print item[key] 

從某種意義上說,您仍然提到了鍵,但是您沒有明確引用它們的值。

如果你只是感興趣的值,可以使用的值()方法:

for item in item_list: 
    for key in item.values(): 
     print item[key] 

我遍歷字典雖然是與物品,返回鍵,值對的元組首選方式。

for item in item_list: 
    for key, value in item.items(): 
     print key, value 
0
for d in item_list: 
    for i in d.values(): 
     print i 

你也可以撥打d.items()和取回的(鍵,值)元組,如果你想獲得兩者。 此外,如果您不關心可讀性,則可以使用它來獲取列表中所有字典值的列表。

[X對Y(i.values()因爲我在item_list)在Y X]

您還可以使用:[d for i in item_list for d in i.values()]得到的值,並將其壓扁成一個列表(雖然你仍然會嵌套因爲衣服的價值是一個列表

最後,你可以在詞典合併成一個,如果他們有不同的鍵:

joint_mapping = dict([d for i in item_list for d in i.items()]) 

,或者如果他們不具備的獨特價值,你可以用下面的代碼來生成值列表的字典:

for k, v in [d for i in item_list for d in i.items()]: 
    new_d[k] = new_d.get(k, [])+[v] 
0

我會做這樣的事情:

for item in item_list: 
    for key, value in item.iteritems(): 
    print key, value 
0

讓我們說,你有這樣的

prices_list = [{'toys':25,'clothes':[12,15,20]},{'toys':35,'clothes':[12,15,20]}] 

一個列表中,您想獲得對應toys值,但沒有在for循環中指定名稱。所以,你可以使用operator.itemgetter這樣

from operator import itemgetter 
getter = itemgetter("toys") 
print [getter(item) for item in prices_list] 
# [25, 35] 

同樣可以這樣

total = 0 
for item in prices_list: 
    total += getter(item) 
0

你提到使用:

@Eenvincible - 我會輸入這些值與其它變量。打印只是我給的一個例子。所以不想對密鑰進行硬編碼。

我想你可以使用for循環做你的訣竅,如其他答案中提到的那樣。

for item in item_list: 
    for key in item: 
     print item[key] 
     tempvariable = item[key] 
     .... do something here. 

如果你想給每個值分配給一個單獨的變量,你應該:

- First, assign that variables to any insignificant value EX: **None** or *""* 
- Then, dynamically use the for loop to reassign each variable to new value using if condition or thier index. 

EX:

price_toys , price_clothes , stock_toys , stock_clothes = None , None , None , None 
for item in item_list: 
    for key in item: 
      tempvariable = item[key] 
      # condition to choose which varible will be set to the current value. 
      if item == "price" and key == "toys": 
        price_toys = tempvariable 
      # and so on