如何在python中访问列表中的字典元素

时间:2014-03-14 02:04:12

标签: python dictionary

我正在尝试了解字典和Python中的列表。

假设我有一个包含3个词典的列表 防爆。 item_list = [price,stock,quantity]

价格,库存和数量是这里的词典。每个字典都有很少的键值对,如

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

我知道要访问单个元素,我可以使用带有指定键的for循环:

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

如何在不直接提及for循环中的键的情况下访问元素?

5 个答案:

答案 0 :(得分:0)

您可以迭代字典,就像您可以遍历列表一样。

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

从某种意义上说,你仍然提到了密钥,但你没有明确地通过它们的价值来引用它们。

如果您只对值感兴趣,可以使用values()方法:

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

迭代字典的首选方法是使用items,它返回一组键值对。

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

答案 1 :(得分:0)

for d in item_list:
    for i in d.values():
       print i

如果你想要访问两者,你也可以调用d.items()并获取(key,value)元组。 另外,如果您不关心可读性,可以使用它来获取列表中所有值的列表。

[x for y in(i.values()for i in item_list)x in y]

你也可以使用:[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()])

或者如果它们没有唯一值,您可以使用以下代码生成值列表的dict。 :

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

答案 2 :(得分:0)

我会做这样的事情:

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

答案 3 :(得分: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)

答案 4 :(得分: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