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)