C#:C# 中的字典是否具有类似于 Python setdefault 的内容?

标签 c# python dictionary

正在尝试翻译 some methods用 Python 写成 C#。该行看起来像这样:

d[p] = d.setdefault(p, 0) + 1

setdefault 到底做了什么?我可以在 C# 字典中使用类似的东西吗?或者更确切地说,我如何将该行翻译成 C#?

最佳答案

来自Python docs :

setdefault(key[, default])

If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.

在.NET框架中没有直接实现,但是你可以定义一个扩展方法:

public static V SetDefault<K,V>(this IDictionary<K,V> dict, K key, V @default)
{
    V value;
    if (!dict.TryGetValue(key, out value))
    {
        dict.Add(key, @default);
        return @default;
    }
    else
    {
        return value;
    }
}

用法:

string key;
Dictionary<string, int> dict;

dict[key] = dict.SetDefault(key, 0) + 1;

关于C#:C# 中的字典是否具有类似于 Python setdefault 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1514457/

相关文章:

c# - WPF:在不破坏 IsEnabled 的情况下实现 ICommandSource

java - 如何打印与特定值关联的所有键?

c# - 从 IEnumerable<Dictionary<string, object>> 获取键和值

algorithm - 将STL映射转换为基于数值的键排序列表的好算法

python - 这个排序算法的名称是什么?是冒泡排序吗?最简单的排序?

python - 如何为来自同一 pandas Dataframe 的所有不同列制作单独的 Seaborn kde 图?

c# - 你能在 ASP.net 文本框中创建 "separator"吗? (C#)

c# - 字符串表达式到 c# 函数委托(delegate)

c# - 从 Type 获取默认值的最佳方法是什么

python - 无法在 mac 上的 python 中使用 opencv 读取 xvid 视频