You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:统计列表中键的数量及'test'键出现次数的惯用方法

让我来一步步帮你解决这两个问题~

问题1:统计列表中包含的键的总数

这里分两种场景,你可以根据需求选择:

  • 统计所有出现的键的总次数(包括不同map里重复的键):
    先把每个map的键都提取出来拼成一个列表,再统计长度即可:
    list = [%{"test" => 1}, %{"test" => 3}, %{"test2" => 1}]
    total_key_count = list |> Enum.flat_map(&Map.keys/1) |> length()
    # 结果:3(对应三个键:"test", "test", "test2")
    
  • 统计去重后的唯一键数量:
    在上面的基础上加上去重步骤就行:
    unique_key_count = list |> Enum.flat_map(&Map.keys/1) |> Enum.uniq() |> length()
    # 结果:2(唯一键是"test"和"test2")
    
问题2:用函数式方法统计'test'键的出现次数

函数式风格里,Enum.count/2就是最适合的工具!它不需要你手动维护计数器,直接传入列表和判断逻辑就行:

list = [%{"test" => 1}, %{"test" => 3}, %{"test2" => 1}]
test_key_count = Enum.count(list, fn map -> Map.has_key?(map, "test") end)
# 结果:2(前两个map都包含"test"键)

这个写法完全是无副作用的函数式风格,比用Enum.each或者for循环手动计数简洁优雅太多啦~

内容的提问来源于stack exchange,提问作者lapinkoira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:30:58