所以我加载了一个pickle文件,这里有这些词典:
{1536: {'origin': u'HW', 'department': u'Kunde', 'events': [(1411562482304633L, u'new'), (1421683468875977L, u'closed')]},
{1537: {'origin': u'HW', 'department': u'Kunde', 'events': [(1411562809498852L, u'new'), (1414071035946802L, u'closed')]},
{1538: {'origin': u'HW', 'department': u'Kunde', 'events': [(1411562928759247L, u'new')]}
你可以看到有一个叫做“事件”的元组。它可以包含一个或多个事件。 我想显示所有这些包含名为' closed'。
的事件的词典我已经尝试过这种方式,但它不起作用
ticketdata = pickle.load(open("tickets.p", "rb"))
for i in ticketdata:
for j in ticketdata[i]['events']:
if 'closed' in ticketdata[i]['events']:
print i, ticketdata[i]['events']
答案 0 :(得分:1)
您正在检查'关闭'是否在元组列表中,但不在元组本身中,因此它永远不会匹配。您已经使用j
迭代了元组列表,因此只需检查closed
是否在j
中。
ticketdata = pickle.load(open("tickets.p", "rb"))
for i in ticketdata:
for j in ticketdata[i]['events']:
if 'closed' in j:
print i, ticketdata[i]['events']
答案 1 :(得分:0)
以pythonic方式,你可以这样做: 将所有的dic放在名为lst_dic的列表中:
dic_closed = [dic for dic in lst_dic for evt in dic.get('events',[]) if 'closeed' in evt]
答案 2 :(得分:0)
不需要两个for
循环:
ticketdata = pickle.load(open("tickets.p", "rb"))
for (i,j) in ticketdata.iteritems():
if 'closed' in j['events']:
print i,j['events']