我有一个嵌套字典设置,我正在尝试访问,但在将密钥设置为我的用户决定的内容时访问'nextmo'部分时遇到问题(我在下面的示例中将其设置为2月)。理想情况下它应该打印'Mar'
D = {'Jan': {'days': 31, 'nextmo': 'Feb', 'prevmo': 'Dec'},
'Feb': {'days': 29, 'nextmo': 'Mar', 'prevmo': 'Jan'},
'Mar': {'days': 31, 'nextmo': 'Apr', 'prevmo': 'Feb'},
'Apr': {'days': 30, 'nextmo': 'May', 'prevmo': 'Mar'},
'May': {'days': 31, 'nextmo': 'Jun', 'prevmo': 'Apr'},
'Jun': {'days': 30, 'nextmo': 'Jul', 'prevmo': 'May'},
'Jul': {'days': 31, 'nextmo': 'Aug', 'prevmo': 'Jun'},
'Aug': {'days': 31, 'nextmo': 'Sep', 'prevmo': 'Jul'},
'Sep': {'days': 30, 'nextmo': 'Oct', 'prevmo': 'Aug'},
'Oct': {'days': 31, 'nextmo': 'Nov', 'prevmo': 'Sep'},
'Nov': {'days': 30, 'nextmo': 'Dec', 'prevmo': 'Nov'},
'Dec': {'days': 31, 'nextmo': 'Jan', 'prevmo': 'Jan'},}
bday_month_in = "Feb"
for k, v in D.items():
if bday_month_in is dict:
print(bday_month_in['nextmo'])
答案 0 :(得分:4)
如果您只想在bda_month_in
之后的下一个月,那么这应该有效:
bday_month_in = 'Feb'
D[bday_month_in]['nextmo'] # 'Mar'
答案 1 :(得分:1)
首先,您的代码中存在一个主要问题:
if bday_month_in is dict:
# [...]
这里,bday_month_in
是一个字符串("Feb"
),而不是字典,所以这个if
语句永远不会成立。
现在,如果你想迭代嵌套的字典,你可以这样做:
for (month, inner_dict) in D.items():
print("Month: {}".format(month))
for (key, value) in inner_dict.items():
print(" key={}, value={}".format(key, value))
但是从您的问题看来,您甚至不需要迭代嵌套的字典:
D['Feb']['nextmo']