微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如果不存在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 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。