Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 递归处理键错误_Python_Dictionary - Fatal编程技术网

Python 递归处理键错误

Python 递归处理键错误,python,dictionary,Python,Dictionary,我想为导致KeyError的键递归地将键值设置为“-” 这是我的字典 Rojar = { '2010': {'fcf_share': '96.87', 'roce': '10.52', 'roic': '0', 'roe': '19.95', 'roa': '2.6'}, '2011': {'fcf_share': '30.43', 'roce': '9.94', 'roic': '0', 'roe': '26.48', 'roa': '2.76'},

我想为导致KeyError的键递归地将键值设置为“-”

这是我的字典

Rojar = {
    '2010': {'fcf_share': '96.87', 'roce': '10.52', 'roic': '0', 'roe': '19.95', 
    'roa': '2.6'},
    '2011': {'fcf_share': '30.43', 'roce': '9.94', 'roic': '0', 'roe': 
    '26.48', 'roa': '2.76'}, 
    '2012': {'fcf_share': '75.54', 'roce': '11.84', 'roic': 
    '0', 'roe': '27.84', 'roa': '3.25'},
        }
像Rojar一样,有500多人拥有数据,但并非所有人都拥有每个字段。 我想从每个人那里获取每年对应的“roce”、“roe”和“roa”字段。 通过将person代码解析为函数,我可以从中获取值

Rojar = {k: {'roce': v['roce'], 'roe':v['roe'],'roa':v['roa']} for k, v in Rojar.iteritems()}

#it returns
    Rojar = {
    '2010': {'roce': '10.52','roe': '19.95', 'roa': '2.6'},
    '2011': {'roce': '9.94','roe': '26.48', 'roa': '2.76'}, 
    '2012': {'roce': '11.84','roe': '27.84', 'roa': '3.25'},
            }
但问题是,并非每个人都有这些价值观。 例如,如果Rojan没有“roce”对应于“2010年”,而“roa”对应于“2012年”

#it has to return like 

    Rojar = {
    '2010': {'roce': '-','roe': '19.95', 'roa': '2.6'},
    '2011': {'roce': '9.94','roe': '26.48', 'roa': '2.76'}, 
    '2012': {'roce': '11.84','roe': '27.84', 'roa': '-'},
            }

谢谢

使用
dict.get
方法:

Rojar = {k: {'roce': v.get('roce','-'),
             'roe': v.get('roe','-'),
             'roa': v.get('roa','-')}
        for k, v in Rojar.iteritems()}

这样,如果字典
v
没有给定的键,该值将默认为“-”。

使用
dict.get
方法:

Rojar = {k: {'roce': v.get('roce','-'),
             'roe': v.get('roe','-'),
             'roa': v.get('roa','-')}
        for k, v in Rojar.iteritems()}

这样,如果字典
v
没有给定的键,该值将默认为“-”。

使用
dict.get
方法:

Rojar = {k: {'roce': v.get('roce','-'),
             'roe': v.get('roe','-'),
             'roa': v.get('roa','-')}
        for k, v in Rojar.iteritems()}

这样,如果字典
v
没有给定的键,该值将默认为“-”。

使用
dict.get
方法:

Rojar = {k: {'roce': v.get('roce','-'),
             'roe': v.get('roe','-'),
             'roa': v.get('roa','-')}
        for k, v in Rojar.iteritems()}
这样,如果字典
v
没有给定的键,该值将默认为“-”。

使用
v.get('roce','some default value')怎么样?
?使用
v.get('roce','some default value')
怎么样?使用
v.get('roce','some default value')
怎么样('roce','some default value')?