使用dict理解时如何避免丢失键的错误

时间:2018-03-02 20:50:57

标签: python python-3.x pandas dictionary

如何在pd.DataFrame.from_dict理解迭代中忽略缺失的键?

@jezrael友好地回答了我在这里用字典值制作df的问题:

https://stackoverflow.com/a/49072184/9242601

但是我遇到了Key Error: 'fees'错误,因为并非所有“客户”都有“费用”键,所以我不想生成错误,而是希望迭代转移到下一个客户而不是记录那个客户在df。

我仍然需要一个数据框,因此try... exceptif key in dict将不起作用,因为我最终会得到一个空的(或不存在的)df。

对于将这个问题有效地传播到两个问题上的道歉,但我认为不值得重复完整的初始问题(因此链接)。

感谢。

2 个答案:

答案 0 :(得分:1)

链接没问题 - 它在Stackoverflow中,不会去任何地方。

符合dict.get方法。通过前导,这几乎是你需要知道的一切:

>>> d = {'present': 'real_value'}
>>> d.get('present')
'real_value'
>>> d.get('absent') is None
True
>>> d.get('absent', 'default')
'default'

你应该找到修改后的理解

{k: dict(v['fees']) for k, v in d.items() if v.get('fees') is not None}

满足您的需求,但这是未经测试的代码。

答案 1 :(得分:0)

有几种不同的方法可以解决这个问题。

一种方法是使用try except语句来捕获错误。

另一种方法是测试密钥是否在dict key in dict中。

另一种方法是使用dict的get方法dict.get(key, default = None),如果找不到该值,则默认选项将返回None,或者您可以将其设置为您需要的值。