- KDB+ - 教程
- KDB+ - 概述
- KDB + - 架构( Architecture)
- Q编程语言(Q Programming Language)
- Q语言 - 类型转换(Type Casting)
- Q语言 - 时间数据(Temporal Data)
- Q Language - Lists
- Q语言 - 索引(Indexing)
- Q语言 - 词典(Dictionaries)
- Q Language - Table
- Q语言 - 动词和副词(Verb & Adverbs)
- Q Language - Joins
- Q语言 - 功能(Functions)
- Q语言 - 内置函数(Built-in Functions)
- Q语言 - 查询(Queries)
- Q - 进程间通信(Q - Inter-Process Communication)
- Q - Message Handler (.Z Library)
- Q语言 - 属性(Attributes)
- Q语言 - 功能查询(Functional Queries)
- Q语言 - 表算法(Table Arithmetic)
- Q语言 - 磁盘上的表(Tables on Disk)
- Q语言 - 维护功能(Maintenance Functions)
- KDB+ - 有用的资源
- KDB+ - 讨论
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Q语言 - 词典(Dictionaries)
字典是列表的扩展,为创建表提供了基础。 在数学术语中,字典创建了
“域→范围”
或者一般(简称)创造
“关键→价值”
元素之间的关系。
字典是键值对的有序集合,大致相当于哈希表。 字典是由域列表和范围列表之间通过位置对应关系定义的显式I/O关联定义的映射。 字典的创建使用“xkey”原语(!)
ListOfDomain ! ListOfRange
最基本的字典将简单列表映射到简单列表。
输入(I) | 输出(O) |
---|---|
`Name | `John |
`Age | 36 |
`Sex | “M” |
Weight | 60.3 |
q)d:`Name`Age`Sex`Weight!(`John;36;"M";60.3) /Create a dictionary d
q)d
Name | `John
Age | 36
Sex | "M"
Weight | 60.3
q)count d /To get the number of rows in a dictionary.
4
q)key d /The function key returns the domain
`Name`Age`Sex`Weight
q)value d /The function value returns the range.
`John
36
"M"
60.3
q)cols d /The function cols also returns the domain.
`Name`Age`Sex`Weight
Lookup
查找对应于输入值的字典输出值被称为looking up输入。
q)d[`Name] /Accessing the value of domain `Name
`John
q)d[`Name`Sex] /extended item-wise to a simple list of keys
`John
"M"
使用Verb查找@
q)d1:`one`two`three!9 18 27
q)d1[`two]
18
q)d1@`two
18
字典操作
修改和Upsert
与列表一样,可以通过索引分配修改字典的项目。
d:`Name`Age`Sex`Weight! (`John;36;"M";60.3)
/A dictionary d
q)d[`Age]:35 /Assigning new value to key Age
q)d
/New value assigned to key Age in d
Name | `John
Age | 35
Sex | "M"
Weight | 60.3
可以通过索引分配扩展字典。
q)d[`Height]:"182 Ft"
q)d
Name | `John
Age | 35
Sex | "M"
Weight | 60.3
Height | "182 Ft"
使用Find(?)反向查找
find(?)运算符用于通过将一系列元素映射到其domain元素来执行反向查找。
q)d2:`x`y`z!99 88 77
q)d2?77
`z
如果列表的元素不是唯一的,则find返回从域列表映射到它的第一个项目。
删除条目
要从字典中delete ( _ ) function条目,请使用delete ( _ ) function 。 (_)的左操作数是字典,右操作数是键值。
q)d2:`x`y`z!99 88 77
q)d2 _`z
x| 99
y| 88
如果第一个操作数是变量,则_的左侧需要空格。
q)`x`y _ d2 /Deleting multiple entries
z| 77
列字典
列字典是创建表的基础。 考虑以下示例 -
q)scores: `name`id!(`John`Jenny`Jonathan;9 18 27)
/Dictionary scores
q)scores[`name] /The values for the name column are
`John`Jenny`Jonathan
q)scores.name /Retrieving the values for a column in a
/column dictionary using dot notation.
`John`Jenny`Jonathan
q)scores[`name][1] /Values in row 1 of the name column
`Jenny
q)scores[`id][2] /Values in row 2 of the id column is
27
翻阅字典
翻转列字典的净效果只是反转索引的顺序。 这在逻辑上等同于转置行和列。
翻转列字典
通过应用一元翻转算子获得字典的转置。 看看下面的例子 -
q)scores
name | John Jenny Jonathan
id | 9 18 27
q)flip scores
name id
---------------
John 9
Jenny 18
Jonathan 27
翻转翻译列字典
如果您将字典移调两次,则会获得原始字典,
q)scores ~ flip flip scores
1b
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论