我正在尝试设置一个允许我循环3个级别的字典。例如:
1级:肉类,非肉类 2级:水果,蔬菜,猪,牛 3级:苹果,橘子,西兰花,胡萝卜,培根,火腿,排骨,牛排
我尝试过的字典如下:
X = {
"Meats":{
"Pig":[["Bacon"], ["Ham"]],
"Cow":[["Ribs"], ["Steak"]]
},
"Non-Meats":{
"Fruit":[["Apple"], ["Oranges"]],
"Vegetable":[["Broccoli"], ["Carrots"]]
}
}
任何有关如何处理此事的建议都将受到赞赏。
答案 0 :(得分:1)
解决这样一个问题需要的是逐步完成字典工作,找出你需要迭代的内容。
第一步: 你将如何遍历顶级字典键?
for key in X:
do something
第二步:
Q :对于每个密钥,您需要迭代什么?
回答:另一个词典。所以,我们已经包括了上一步:
for key in X:
for key_two in X[key]:
do something
第3步:
Q :你最终在这些决定中有什么?
回答:列表列表(例如[["Bacon"]]
)。我不确定为什么每个都是一个列表,你可以让它们成为字符串。例如,{"Pig": ["Bacon", "Ham"]}
。但是,对于你所拥有的,我们得到:
for key in X:
for key_two in X[key]:
for food in X[key][key_two]:
print food # If you want to print without the list, it'd be either a final nested loop or "print food[0]"
答案 1 :(得分:1)
您要做的是创建嵌套字典。
有助于您了解正在创建的结构的一件事是正确的格式。有一种称为PEP8的格式标准,但只要你保持一致,就可以使用你想要的任何样式。
X = {
"Meats": {
"Pig": [
["Bacon"], ["Ham"]
],
"Cow": [
["Ribs"], ["Steak"]
]
},
"Non-Meats": {
"Fruit": [
["Apple"], ["Oranges"]
],
"Vegetable": [
["Broccoli"], ["Carrots"]
]
}
}
这种格式化是否使结构更易于阅读?在我看来,每个内部项目周围的括号是不必要的,因为它们已经在列表的一部分
如果我们在没有那些内方括号的情况下重写'non-meats'字典项的Vegetable项,它看起来像这样:
"Vegetable": [
"Broccoli", "Carrots"
]
然后你可以得到像这样的蔬菜列表:
veggies = x['Non-Meats']['Vegetable']
变量'veggies'现在是一个可迭代的列表。打印该列表将导致如下所示:
['Broccoli', 'Carrots']