📜  Julia 中的 NamedTuple

📅  最后修改于: 2022-05-13 01:54:55.195000             🧑  作者: Mango

Julia 中的 NamedTuple

元组是写成数组的异构和同类数据类型的集合,用逗号分隔。元组基本上是不同值的不可变集合。元组与数组不同,因为数组只将同类数据类型作为值。 NamedTuple 是一种 Tuple 类型,其元素可以在内存位置中调用,不仅可以通过其索引值,还可以通过值的名称。 NamedTuple 中的每个值都由一个唯一值表示,该值写为该值的符号。
就像元组一样,NamedTuples 也是不可变的,这意味着一旦定义,值和它们的名称都不能更改。

句法:

Tuple_name = (name1 = value, name2 = value2, ....)
# Julia program to define NamedTuples
   
# Creating an empty tuple
tupl1 = ()
println(isempty(tupl1))
   
# Creating a NamedTuple with similar values
tupl2 = (a = 1, b = 2, c = 4, d = 5)
println(tupl2)
  
# Creating a NamedTuple with mixed values
tupl3 = (a = 1, b = 2, c = "Hello Geeks")
println(tupl3)

输出:
命名为Tuple-Julia-Output-011

从 NamedTuple 访问元素

可以通过使用分配给它们的字段索引或使用分配给值的名称来访问命名元组中的元素。
句法:

Tuple_Name[Index_value]
or
Tuple_Name[:Value_Name]

例子:

# Julia program to access elements 
# from a NamedTuple
  
# Creating a NamedTuple with similar values
tupl2 = (a = 1, b = 2, c = 4, d = 5)
  
# Accessing using Index value
println(tupl2[2])
println(tupl2[4])
  
# Creating a NamedTuple with mixed values
tupl3 = (a = 1, b = 2, c = "Hello Geeks")
  
# Accessing using assigned value name
println(tupl3[:b])
println(tupl3.c)

输出:
命名为Tuple-Julia-Output-02使用 getindex()函数:
NamedTuple 中的元素也可以使用 Julia 中的预定义函数getindex()来访问。此函数接受 Tuple_Name 和 Key_value/Index_value 作为参数并返回该索引处的元素。

句法:

Element = getindex(Tuple_Name, Key_value)
Element = getindex(Tuple_Name, Index_value)

例子:

# Julia program to access keys and values 
# from a NamedTuple
  
# Creating a NamedTuple
tupl = (a = 1, b = 2, c = "Hello Geeks")
  
# Getting value using Key
Value1 = getindex(tupl, :b)
  
# Getting value using Index
Value2 = getindex(tupl, 3)
  
# Printing values
println(Value1)
println(Value2)

输出:
命名为Tuple-Julia-Output-04

从 NamedTuple 访问键和值:

键是分配给 NamedTuple 值的名称。可以使用 'keys' 关键字以元组的形式访问键。另一方面,可以使用“values”关键字访问值。这些关键字生成元组形式的元素列表。

句法:

Keys = keys(Tuple_Name)
Values = values(Tuple_Name)

例子:

# Julia program to access keys and values 
# from a NamedTuple
  
# Creating a NamedTuple
tupl = (a = 1, b = 2, c = "Hello Geeks")
  
# Accessing keys
Keys = keys(tupl)
  
# Accessing Values
Values = values(tupl)
  
# Printing Keys and Values
println(Keys)
println(Values)

输出:
命名为Tuple-Julia-Output-03

NamedTuples 上的操作

Julia 允许使用一些预定义的关键字对 NamedTuples 执行各种操作。这些操作是:

使用“ collect ”获取元组值数组:

collect关键字的帮助下,元组值也可以表示为数组。该关键字还可用于使用pairs关键字打印键值对。这个键值对对于迭代元组非常有用。

句法:

Array_Name = collect(Tuple_Name)
Array_Name = collect(pairs(Tuple_Name))

例子:

# Julia program to illustrate 
# the use of collect keyword
  
# Creating a NamedTuple
tupl = (a = 1, b = 2, c = 3, d = 4)
  
# Use of collect to get Array of values
Array = collect(tupl)
  
# Use of collect to get 
# Array of Key-value pair
Array2 = collect(pairs(tupl))
  
# Printing Arrays
println(Array)
println(Array2)

输出:
命名为Tuple-Julia-Output-05

使用 ' Zip ' 创建一个元组:

NamedTuple 也可以通过将 Keys 和 Values 分别定义为单独的元组,然后将它们组合在一起形成 NamedTuple 来创建。这可以通过使用关键字' zip '来完成。 zip 关键字与放在元组内的分号 (:) 一起使用。

句法:

Keys = (Key1, Key2, Key3, ...)
Values = (Value1, Value2, Value3, ...)
Named_Tuple = (; zip(Keys, Values)

例子:

# Julia program to illustrate 
# the use of zip keyword
  
# Creating a tuple of Keys
Key_Tuple = (:a, :b, :c, :d)
  
# Creating a tuple of Values
Value_Tuple = (1, 2, 3, "Hello World")
  
# Zipping Keys and Values
Named_Tuple = (; zip(Key_Tuple, Value_Tuple)...) 
  
# Printing Values
println("Keys = ", Key_Tuple)
println("Values = ", Value_Tuple)
println("Tuple = ", Named_Tuple)

输出:
命名为Tuple-Julia-Output-06

使用“ merge ”来组合元组:

Julia 允许使用名为“ merge ”的关键字将两个或多个 NamedTuples 合并为一个元组。当合并两个元组时,如果两个元组都有一个共同的键,那么最近创建的元组中的键的值将用于最终的元组。

句法:

Final_tuple = merge(Tuple1, Tuple2, Tuple3, ...)

示例 1:

# Julia program to illustrate 
# the use of merge keyword
  
# Creating first tuple
tupl1 = (a = 1, b = 2, c = 3)
  
# Creating second tuple
tupl2 = (d = 4, e = 5)
  
# Using merge operator
tupl3 = merge(tupl1, tupl2)
  
# Printing Final Tuple
println(tupl3)

输出:
命名为Tuple-Julia-Output-07

示例 2:

# Julia program to illustrate 
# the use of merge keyword
  
# Creating first tuple
tupl1 = (a = 1, b = 2, c = 3)
  
# Creating second tuple
tupl2 = (b = "Hello", c = "Geeks")
  
# Using merge operator
tupl3 = merge(tupl1, tupl2)
  
# Printing Final Tuple
println(tupl3)

输出:
命名为Tuple-Julia-Output-08