zsh - 查找与 zsh 关联数组中的值匹配的键?
问题描述
在常规数组中,我可以使用(i)
or(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)
只讨论返回值而忽略了这种用法,因此很难找到。
推荐阅读
- python - 抓取问题(访问被拒绝)
- scala - 解析 json 时出现 java.lang.ExceptionInInitializerError
- r - 更改对数据框名称的字符引用
- python - NumPy 向量化函数域的微小变化会产生巨大的差异。为什么结果如此不同?
- c - 是否可以最大化 SDL 窗口?
- django - 如何设计一个 Django API 来处理“动态”表单?
- html - 如何在折叠菜单旁边实现悬停提示
- go - 为什么带有 tls 证书的 Golang http 请求会导致握手失败?
- python - 数字对的一个索引的平均值
- android - Kotest(以前的 KotlinTest)是否仍然在 Android Studio 中工作?