如何处理循环中不存在的字典键?

时间:2020-03-07 16:37:58

标签: python dictionary for-loop jsonparser

我试图解析json并在Python中使用for循环。 obj是json,而且您知道它就像字典中字典中的字典...依此类推。

所以我解析json并将其作为for循环,如下所示:

all = obj['products']
for a in obj:
      recommendSellerScore.append(a['recommendSellerScore'])

但是,问题是'recommendSellerScore',这是某些列表中不存在的密钥。

结果是我要打印'None'不存在的recommendSellerScore,并打印recommendSellerScore存在的值。

for a in all:
    if a['recommendSellerScore'] in all:
        recommendSellerScore.append(a['recommendSellerScore'])
    else:
        continue
        print('None')

我在上面运行了此代码,但由于'recommendSellerScore'不存在而出现错误。

for a in all:
    if ['recommendSellerScore'] in all:
        recommendSellerScore.append(a['recommendSellerScore'])
    else:
        continue
        print('None')

这是可行的,但是,由于'recommendSellerScore'存在于字典的列表中,因此不可迭代。 (我猜)

请修正我的代码,任何意见或建议将不胜感激!

3 个答案:

答案 0 :(得分:2)

这是您代码的固定版本(我取出了const MyInput = props => { const valueHandler = value => { if (props.value != value) { // user changed a value? props.changeValue(props.name, value) // then change it in state props.onChange() // and call evaluate function in parent } } return ( <View style={{padding: 20}}> <Text>Field {props.name}</Text> <TextInput style={{width: 200, border: 1}} onChangeText={valueHandler} value={props.value ? props.value.toString() : ''} /> </View> ); } function mapStateToProps(state, ownProps) { return { value: getValue(state, ownProps.name), } } function mapDispatchToProps(dispatch) { return { changeValue: (field, value) => dispatch(changeValue(field, value)), } } export default connect(mapStateToProps, mapDispatchToProps)(MyInput) 语句和字符串周围的continue

[]

答案 1 :(得分:2)

也许下面的代码适合您?

for a in all:
    if "recommendSellerScore" in a:
        recommendSellerScore.append(a["recommendSellerScore"])
    else:
        print("None")

答案 2 :(得分:2)

您可以使用get的词典方法尝试访问字典值,如果不存在该键,则可以提供一个默认值,如果不指定该键,它将输出{{1} },例如:

None

编辑:如@kederrac所指出的,如果您的数据可以具有key = 'recommendSellerScore' a = [{key: 1}, {}] recommendSellerScore = [] for d in a: score = d.get(key) if score is not None: print(score) recommendSellerScore.append(score) else: print('None') 值,并且您有兴趣保留这些{key: None}值,那么最好询问该键是否确实存在于字典中,例如例如:

None

它将打印:

key = 'recommendSellerScore'
a = [{key: 1}, {key: None}]

recommendSellerScore = []
for d in a:
    if key in d.keys():
        print(d[key])
        recommendSellerScore.append(d[key])
    else:
        print('None')