zsh - 在 zsh 关联数组中找到与值匹配的键?

标签 zsh associative-array

在常规数组中,我可以使用 (i)(I) 来搜索与给定值匹配的条目的索引(从头开始的第一个匹配项或数组的末尾,分别):

list=(foo bar baz)
echo $list[(i)bar]
# => 2

这不适用于关联数组,获取找到值的(其中一个)键:

declare -A hash=([foo]=bar [baz]=zoo)
echo $hash[(i)bar]
# => no output 

除了手动循环之外,还有其他机制可以做到这一点吗?

最佳答案

(r) 下标标志与 (k) 参数标志相结合应该给你 你想要什么:

declare -A hash=([foo]=bar [baz]=zoo)
echo ${(k)hash[(r)bar]}
# => foo

关于 (r) 下标标志的手册页部分只谈到返回 重视并忽略这种用法,所以很难找到。

关于zsh - 在 zsh 关联数组中找到与值匹配的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63724078/

相关文章:

zsh - 如何让 zsh 从历史记录中排除某些命令?

ruby - 无法在 Mac 上解析 zsh 和 oh-my-zsh 的 "rbenv init"指令

zsh - 在 ZSH 中设置环境变量给出了预期的数字

function - 如何在zsh中使用带有功能的 watch ?

command-line - 纯提示安装问题

javascript - 什么是将事物分类为类型的良好 JavaScript 模式?

php - 在 MYSQL 中读取和写入 PHP 数组

php - 关联数组与 SplObjectStorage

c - 在 C 中创建一个元组

php - 从条件内的关联数组中删除特定键