Python 尝试在循环中从字典中弹出KV对时出错
我有一本这样的字典:Python 尝试在循环中从字典中弹出KV对时出错,python,dictionary,del,Python,Dictionary,Del,我有一本这样的字典: {'1A': {'White Bread loaf large': 1, 'Brown Bread loaf large': 1, 'Skimmed Milk Pint': 1, 'Cheddar Cheese Medium 300g': 1, 'Tomatoes Fresh Vine 500g': 1, 'Carrots 1Kg': 1, 'Potatoes 600g': 1, 'Bacon 300g': 1, 'Eggs Free Range Medium 12': 1
{'1A': {'White Bread loaf large': 1, 'Brown Bread loaf large': 1, 'Skimmed Milk Pint': 1, 'Cheddar Cheese Medium 300g': 1, 'Tomatoes Fresh Vine 500g': 1, 'Carrots 1Kg': 1, 'Potatoes 600g': 1, 'Bacon 300g': 1, 'Eggs Free Range Medium 12': 1, 'Ham 300g': 1, 'Frozen Peas 800g': 1, 'Kitchen Roll 200 Sheets': 1},
'1B': {'Brown Bread loaf large': 1, 'Bread Sliced White large': 1, 'Skimmed Milk Pint': 1, 'Cheddar Cheese Mature 300g': 1, 'Tomatoes Plum Can 500g': 1, 'Carrots 1Kg': 1, 'Potatoes 600g': 1, 'Rice White 500g': 1, 'Rice Brown 500g': 1, 'Butter 500g': 1, 'Bacon 300g': 1, 'Ham 300g': 1, 'Frozen Peas 800g': 1, 'Fresh onions 300g': 1, 'Tea Bags 50 pack': 1},...
我试图移除所有KV对,其中键等于“米色500g”
这就是我试图做到的:
for i in list(my_dict):
for n in my_dict[i]:
if n == 'Rice Brown 500g':
my_dict.pop(n)
我还尝试使用del我的dict[n]
我一直收到这个错误:KeyError:'Rice Brown 500g'
我不知道还有什么好尝试的。提前感谢在您的字典中没有键'Rice Brown 500g',有键'1A',1B'。因此,对它们进行迭代,获取嵌套字典并从中删除以下值:
my_dict = {'1A': {'White Bread loaf large': 1, 'Brown Bread loaf large': 1, 'Skimmed Milk Pint': 1, 'Cheddar Cheese Medium 300g': 1, 'Tomatoes Fresh Vine 500g': 1, 'Carrots 1Kg': 1, 'Potatoes 600g': 1, 'Bacon 300g': 1, 'Eggs Free Range Medium 12': 1, 'Ham 300g': 1, 'Frozen Peas 800g': 1, 'Kitchen Roll 200 Sheets': 1},
'1B': {'Brown Bread loaf large': 1, 'Bread Sliced White large': 1, 'Skimmed Milk Pint': 1, 'Cheddar Cheese Mature 300g': 1, 'Tomatoes Plum Can 500g': 1, 'Carrots 1Kg': 1, 'Potatoes 600g': 1, 'Rice White 500g': 1, 'Rice Brown 500g': 1, 'Butter 500g': 1, 'Bacon 300g': 1, 'Ham 300g': 1, 'Frozen Peas 800g': 1, 'Fresh onions 300g': 1, 'Tea Bags 50 pack': 1}}
for i in list(my_dict):
for key in my_dict[i]:
for list_2 in list(key):
for key_2 in list_2:
if key_2 == 'Rice Brown 500g':
list_2.pop(key_2)
print(my_dict)
我建议使用一种更简单、更具python风格的方法来迭代主词典中的子词典:
for v in my_dict.values():
v.pop('Rice Brown 500g', None)
这就做到了,每个v都是一个子目录,pop()的第二个参数可以防止出现键错误。@KellyBundy:没错,将items()替换为value()
for v in my_dict.values():
v.pop('Rice Brown 500g', None)