Вы можете использовать if
положение, чтобы проверить, если они существуют во внутреннем словаре
>>> for k,v in dictofdict.items():
... if 'date' in v and 'status' in v:
... print("{}\t{}\t{}".format(v['date'],k,v['status']))
...
201504 003 In Review
201504 002 Constant
201504 001 New
Если вы особенно о порядке, то вам придется использовать sorted
в качестве словаря в противном случае это не- заказал
>>> for k,v in sorted(dictofdict.items()):
... if 'date' in v and 'status' in v:
... print("{}\t{}\t{}".format(v['date'],k,v['status']))
...
201504 001 New
201504 002 Constant
201504 003 In Review
Падраик mentions вы можете использовать список понимание для хранения этих значений.
[(k, d["date"], d["status"]) for k, d in sorted(dictofdict.items()) if "date" in d and "status" in d]
Это может быть использовано в качестве
>>> l = [(k, d["date"], d["status"]) for k, d in sorted(dictofdict.items()) if "date" in d and "status" in d]
>>> for i,j,k in l:
... print("{}\t{}\t{}".format(i,j,k))
...
201504 001 New
201504 002 Constant
201504 003 In Review
Как JonCle mentions ниже
Вы можете использовать set.issubset
в вашем предложении тоже.
Это может быть использовано в качестве
>>> for k,v in sorted(dictofdict.items()):
... if {'date', 'status'}.issubset(v):
... print("{}\t{}\t{}".format(v['date'],k,v['status']))
...
201504 001 New
201504 002 Constant
201504 003 In Review
Один окончательного подхода является EAFP. Называется Проще попросить прощения, чем разрешение, вы можете полностью отказаться от предложения if
!
>>> for k, v in sorted(dictofdict.items()):
... try:
... print '{date}\t{}\t{status}'.format(k, **v)
... except KeyError:
... pass
...
201504 001 New
201504 002 Constant
201504 003 In Review
Работа этого заключается в том, что мы предполагаем, что ключ присутствует в dict. Если его там нет, будет возбуждено исключение. Здесь мы решили игнорировать это, поскольку это не требуется для нас.
Примечание:
Как есть словарь здесь, вы можете воспользоваться format
методом здесь, чтобы напечатать ключи словаря (Вы можете увидеть несколько примеров here) и предоставить ключи словаря, как поля в format
Это может быть сделано как
print('{date}\t{}\t{status}'.format(k, **v))
дата и статус всегда есть? –