我正在尝试了解字典和Python中的列表。
假设我有一个包含3个词典的列表
防爆。 item_list = [price,stock,quantity]
价格,库存和数量是这里的词典。每个字典都有很少的键值对,如
price = {'toys':25,'clothes':[12,15,20]}
我知道要访问单个元素,我可以使用带有指定键的for循环:
for item in item_list:
print item['toys']
如何在不直接提及for循环中的键的情况下访问元素?
答案 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