字典 Dict

字典

字典,顾名思义,即是一个按照特定的名称key来存储元素的集合与容器。除此以外,如果您有其他编程语言的开发经验,您可以将列表理解成类似于hashmap, 对象的类型结构。

注意:字典中的元素可以是任何类型的值!

字典具有如下特性:

  • 字典中的元素是没有顺序

  • 字典中的元素通过唯一的键,名称进行访问

注意:一般情况下键需要使用字符串值。

何时使用列表?

当你的物品中,存在以下需求时,可以考虑使用列表:

  • 需要结构化存储大量数据

  • 需要一个具名容器用来存储不同类别下的数据

  • 需要使用到列表自展开功能,即自动展示多行lore时

示例

定义一个字典

您可以通过 {} 字面量语法来声明一个字典,并且字典中可以直接设置好对应的键值对,例如 {name: "AzureFlow", age: 0},即包含了两个元素的字典,每个元素的键分别是 nameage

具体示例如下:

data:
  # 定义了一个含有两个键值对的字典
  attribute: '{ name: "物理攻击", value: 10 }'
  # 用字典实现对象的功能
  user: '{ name: "", age: "", password: "" }'
  # 使用字典和列表嵌套
  nested_dict_list: '[
    {name: "物理攻击", value: 50},
    {name: "物理防御", value: 100},
    {name: "魔法攻击", value: 20},
  ]'
  nested_list_dict: '{
    list1: [1, 2, 3]
    list2: [4, 5, 6]
    list3: [7, 8, 9]
  }'

访问字典中的元素

您可以通过 dict["key"]dict.key 来访问列表中的元素,其中,dict 是已经定义好的列表,key 是待访问的元素的键名。

具体示例如下:

define:
  # 预先定义一个普通的字典, 方便后面演示使用
  user: '{ name: "", age: "", password: "" }'
  # 预先定义一个嵌套, 方便后面演示使用
  attributes: '[
    {name: "物理攻击", value: 50},
    {name: "物理防御", value: 100},
    {name: "魔法攻击", value: 20},
  ]'

data:
  # 访问user字典中的name值
  name: 'user.name'
  # 或者
  name: 'user["name"]'
  # 访问属性列表中的第一个属性字典的名字
  first_attribute_name: 'attributes[0].name'
  # 或者
  first_attribute_name: 'attributes[0]["name"]'

添加一个元素

您可以通过 dict["key"] = valuedict.key = value 来设置添加列表中的元素,其中,dict 是已经定义好的列表,key 是待设置的元素的键名,value 是需要添加的元素。

具体示例如下:

data:
  # 预先定义一个空字典, 方便后面演示使用
  my_dict: '[]'

action:
  onKill:
    # 在每次击杀一个生物时, 以击杀的生物的名字作为键名, 数字1作为值, 设置到字典中
    - 'run: my_dict[event.victim.name] = 1'
    # 更新物品
    - 'update'

Last updated