我有这样的字典theaterinfo
:
"Showtimes":{
"New York": [
{
"Times": {},
"theaterid": 61,
}
]
"Ohio": [
{
"Times": {'2015-01-10',
'2015-01-11'},
"theaterid": 1,
}
]
}
如果Times
为空,我怎么能处理它,不打印出来?
答案 0 :(得分:2)
空字典的计算结果为布尔值False
,而非空字典的计算结果为True
,因此您可以编写
if my_dict['Times']:
print(my_dict['Times'])
答案 1 :(得分:1)
您需要遍历dict["Showtimes"]
项,然后使用dict
键访问列表中的Times
,并使用if为空dict返回False。
d = {"Showtimes":{
"New York": [
{
"Times": {},
"theaterid": 61,
}
],
"Ohio": [
{
"Times": {'2015-01-10',
'2015-01-11'},
"theaterid": 1,
}
]
}}
for k,v in d["Showtimes"].iteritems():
if v[0]["Times"]:
print(k,v)
('Ohio', [{'theaterid': 1, 'Times': set(['2015-01-10', '2015-01-11'])}])
要注意的一件事是,如果你有0
之类的值,这也将返回False,所以如果你只想检查值是否为空dict,请使用if v[0]["Times"] != {}
如果要检查Times
的所有值,并且只打印完整的dict,如果没有空Times
值,则可以使用所有在第一次出现空值时短路的值:
if all(v[0]["Times"] for v in d["Showtimes"].itervalues()):
print(d)
或用任何反转逻辑:
if not any(not v[0]["Times"] for v in d["Showtimes"].itervalues()):
print(d)
如果有可能某个词典未获得Times
密钥,请使用v[0].get("Times",1)