如果不存在IF和ELSE,如何在不存在键值对的情况下如何在python字典中自动初始化键值?

问题描述

如何自动将python字典的键值(不知道使用了哪些键)初始化为1(如果尚不存在且仅存在,则递增)?我想这个概念可以用于任何其他逻辑。


示例:
以下代码会出现错误,因为某些情况char_counts[char]尚未尚未初始化。我还没有办法初始化它,因为我不知道一开始会使用什么键值对。 (实际上,如果我这样做的话,除了循环之外,python中是否有一种便捷的方法可以一键初始化键值对?)
无论如何,我的主要问题如下。

for ~some loop~:
     char_counts[char] += 1

这是我当前的解决方法,对于简单的操作来说似乎有点冗长。 是否有更好的方法来简化/缩短此操作?

for ~some loop~:
    if char_counts.get(char,None):
          char_counts[char] += 1
    else:
          char_counts[char] = 1

谢谢!

解决方法

使用python集合库中的defaultdict

// Method in React

setData() {

        let data = {
            id:this.state.contents.id,//contents is array in the state
            write:this.state.contents.writer,title:this.state.contents.title,description:this.state.contents.description
        }
    
        fetch('http://localhost:3001/board/giveresult',{
        method: 'POST',headers:{
            'Content-Type':'application/json'
        },body:JSON.stringify(data)
        })
        .then (res => res.json())
        .then (data => console.log(data));
    }




//NodeJS Express

const express = require('express');
const app = express();
const receive = require('./routes/receive')
const giveResult = require('./routes/giveResult')
const port = process.env.PORT || 3001;
const cors = require('cors');
var bodyParser = require('body-parser');

app.use(cors());
app.use(bodyParser.json())
app.use('/board/giveresult',giveResult);
app.use('/board/receive',receive);

app.listen(port,function(){
    console.log(`connected ${port} port!`);
});


//giveResult
var express = require('express');
const router = express.Router();
var mysql = require('mysql');
const dbconfig   = require('../mysql.js');
const { Router } = require('express');
const connection = mysql.createConnection(dbconfig);
var bodyParser = require('body-parser');

router.post('/',function(req,res) {
    if(err) throw err;
    
    var post = req.body.id;
    console.log(post)

    res.send('suceess!!!!');
});


module.exports = router;

defaultdict将永远不会抛出KeyError,如果缺少密钥,则该密钥将初始化为0。

,

您可以使用字典对象的 get 方法。

如果字典中不存在该键,则get将返回您要初始化字典的默认值。

char_counts = {}
for ~some loop~:
     # If key is not present,0 will be returned by default
     char_counts[char] = char_count.get(char,0) + 1 

一旦您了解了上面的代码是如何工作的,然后在collections模块中阅读defaultdict并尝试下面的代码。

from collections import defaultdict
char_counts = defaultdict(int)
for ~some loop~:
     char_counts[char] += 1 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...