2014-03-14 185 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