首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归处理KeyError

递归处理KeyError
EN

Stack Overflow用户
提问于 2014-02-25 16:03:26
回答 1查看 231关注 0票数 0

我想递归地将导致KeyError的键的键值设置为'-‘。

这是我的字典

代码语言:javascript
复制
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代码解析为函数,我可以从

代码语言:javascript
复制
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’。

代码语言:javascript
复制
#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': '-'},
            }

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-02-25 16:08:42

使用dict.get方法:

代码语言:javascript
复制
Rojar = {k: {'roce': v.get('roce','-'),
             'roe': v.get('roe','-'),
             'roa': v.get('roa','-')}
        for k, v in Rojar.iteritems()}

这样,如果字典v没有给定的键,该值将缺省为'-‘。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22008034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档