gpt4 book ai didi

dictionary - 以字符串作为键和任何值的字典

转载 作者:行者123 更新时间:2023-12-01 10:17:48 27 4
gpt4 key购买 nike

我正在尝试定义一个将字符串作为键和任何值的字典。因此,我尝试使用 Dict{String, <:Any}作为类型。但是,该表达式的返回值是

> Dict{String,#s27} where #s27

此外,如果我尝试定义那种类型的字典,我会得到一个错误:

  • 对于 Dict{String,<:Any}()我得到 ERROR: MethodError: no method matching Dict{String,#s28} where #s28()
  • 对于 Dict{String,<:Any}("aa"=>42)我得到 ERROR: MethodError: no method matching Dict{String,#s29} where #s29(::Pair{String,Int64})

我也试过使用 Dict{String} (应该是等价的),结果相似。

关于这里的词典类型,我缺少什么?

最佳答案

您正在寻找的是 Dict{String, Any} , 不是 Dict{String, <:Any} .第一个是具体类型,即以字符串为键,以任何内容为值的字典。第二,Dict{String, <:Any}实际上不是具体类型,而是unionall类型。这意味着它是无限的类型集。您看到的错误是您无法实例化这组类型。您只能实例化具体(叶)类型。

另一种写法Dict{String, <:Any}Dict{String, T} where T <: Any ,这使它更清楚它是什么。它是所有类型的集合 DictString因为它们键类型和类型是 Any 的子类型作为它们的值类型。

例如,我们可以说 Dict{String, Int}是无限集的子类型 Dict{String, <:Any} .

编辑:unionall 类型的一种用途是能够将您采用的类型限制在细粒度级别。例如,计数函数可能如下所示:

function count_stuff(stuff, counter::Dict{T, <:Integer}) where T
# stuff here¨
end

这里的第二个参数是 Dict有一些子类型 Integer作为值类型,任何类型作为键类型。这基本上就是您将 dict 用作​​计数器所需要的。

关于dictionary - 以字符串作为键和任何值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59478940/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com