如何从旧字典根据条件获取新字典?
我有一个字典(字典里的字典)
old_dict = {
'1':{'A':1, 'check': 0, 'AA':2, 'AAA':3 , 'status':0},
'2':{'A':11,'check': 0, 'AA':22, 'AAA':33 ,'status':1},
'3':{'A':111,'check': 0, 'AA':222, 'AAA':333 ,'status':0},
'4':{'A':1111,'check': 1, 'AA':2222, 'AAA':3333 ,'status':0},
}
我想得到一个新的字典,要求是 before['check'] 不等于 0,并且 before['status'] 也不等于 0,所以结果会是
new_dict = {
'1':{'A':1, 'check': 0, 'AA':2, 'AAA':3 , 'status':0},
'3':{'A':111,'check': 0, 'AA':222, 'AAA':333 ,'status':0},
}
如果这是一个列表,我是这样做的
ouputdata = [d for d in data if d[1] == ' 0' and d[6]==' 0']
我已经尝试过了
for field in old_dict.values():
if field['check'] !=0 and field['status'] != 0
line = field['A'] + field['AA']+field['AAA']
#write these line to file
我该如何用字典来实现这个呢?你能帮我用字典来做这个吗?
5 个回答
3
dict([x for x in old_dict.iteritems() if x[1]['status']==0 and x[1]['check']==0])
old_dict.iteritems() 会给你返回一对对的列表。然后你可以对这些对进行筛选,再把它们转换回字典。
5
去掉yu_sha的回答中的[],就可以避免创建一个多余的列表:
new_dict = dict( (k,v) for k,v in old_dict.iteritems()
if v["status"] != 0 and v["check"] != 0 )
或者
new_dict = dict(item for item in old_dict.iteritems()
if item[1]["status"] != 0 and item[1]["check"] != 0)
5
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,因为它们涉及到很多技术细节。
比如,有人可能在使用某个特定的编程语言时,发现自己写的代码没有按照预期工作。这时候,查看相关的文档或者在网上搜索解决方案就显得尤为重要。
有时候,其他程序员会在像StackOverflow这样的论坛上提问,描述他们遇到的具体问题,并寻求帮助。其他人则会根据自己的经验,提供解决方案或建议。
总之,编程过程中遇到问题是很正常的,关键是要学会如何寻找信息和解决问题的方法。
new_dict = {}
for k, d in old_dict.iteritems():
if d['check'] == 0 and d['status'] == 0:
new_dict[k] = d