C ++中是否有任何等效于python中字典的get函数的函数?

d4rk4ng31

我正在尝试解决问题声明。

它基本上希望您将给定向量中的重复项更改为唯一形式:

例如:["name","name","name1"]-> ["name","name2","name1"]...您明白了

所以我想到了使用std::map创建一个dictionary(我也可以在这里使用unordered_map)


这就是我使用地图的方式:

std::vector<std::string> getFolderNames(std::vector<std::string>& names) {
    std::vector<std::string> vec_list_of_folders;
    std::map<std::string, int> map_of_names;
    for (const auto& name : names) {
        if (map_of_names.find(std::string(name)) == map_of_names.end()) {
            map_of_names.insert(std::make_pair(name, 1));
        }
        else {
            map_of_names[name] += 1;
        }
    }
    puts("");
    return vec_list_of_folders;
}

该函数仍处于调试模式(这说明了为什么其中一半内容未编码的原因)

我认为重要的部分是:

for (const auto& name : names) {
    if (map_of_names.find(std::string(name)) == map_of_names.end()) {
        map_of_names.insert(std::make_pair(name, 1));
    }
    else {
        map_of_names[name] += 1;
    }
}

我想知道是否有简单的方法可以做到这一点。类似于python中的以下代码:

file_names = ["file1", "file2", "file3", "file1"]
print(*file_names)
example_dict = dict()
for file_name in file_names:
    example_dict[file_name] = example_dict.get(file_name, 0) + 1  # this is the function I'm searching an equivalent for
print(example_dict)

我该怎么办?

安德斯·蒙克(Anders Munch)

您的重要零件代码等效于:

for (const auto& name : names) {
    map_of_names[name] += 1;
}

如果name未找到,则值类型为默认构造,默认构造的int为0。

您可以使用defaultdict在Python中执行类似的操作:

import collections
file_names = ["file1", "file2", "file3", "file1"]
print(*file_names)
example_dict = collections.defaultdict(int)
for file_name in file_names:
    example_dict[file_name] += 1
print(example_dict)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++中是否有任何等效的Python range() ?

C#中是否有等效于SQL NULLIF的函数?

是否有Rust等效于C ++中的clock函数?

NodeJS中是否有任何等效的C#GetAwaiter

在Python中,是否有C ++等效于声明一个函数并在使用后对其进行定义?

C ++中的Python函数修饰符等效于什么?

在C#中是否有等效于Python的ImportError

是否有任何等效于c ++的mach / mach_time.h库

静态函数是否等效于C#中的静态Func成员?

Java中是否有等效的C ++析构函数?

C ++ STL中是否有等效的Polyval(Matlab函数)?

在 C# 中是否有等效的 numpy.tile() 函数?

在现代C ++中,是否有等效于python中基于范围的“枚举”循环?

Kotlin 中是否有等效于 C# 的 DebuggerStepThrough?

Scala中是否有等效于C#nameof的代码?

在PHP中是否有等效于C ++的std :: vector的代码?

在Pascal中,是否有等效于C的__LINE__宏?

在C ++ / STL中是否有等效于Python range()的紧凑型

在C ++ / STL中是否有等效于Python range()的紧凑型

是否有等效于C语言的python中的“ in”关键字

在 Rust 中是否有任何等效于 JavaScript 的 forEach?

在Python中是否有等效于R apply函数的函数?

C ++中的函数是否有任何默认返回类型?

Python中C#的WriteAllBytes等效函数

React和Javascript:是否等效于C函数原型?

等效于目标C中的python枚举

OpenCV:Python等效于C ++中的setTo

是否有R函数等效于Python中的range?

C#字典等效于Python的get()方法