Map filtering based on a list of values


liquid = [
  [asset: "zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy"],
  [asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk"],
  [asset: "EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5"],
  [asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK"],
  [asset: "Dj5Qd92JcymE9D45X12LavQnkEXVJ3mC3odbEt2WG1bN"],
  [asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J"],
  [asset: "B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H"],
  [asset: "8sjzi4otKssS34aYL6Cwc9rKQ5HXw9oKp8zXJaXa2VwR"],
  [asset: "8Yw4QmskrQauQeNjgh2fTQ4swmkNm85GTQzdHEf6QdUU"],
  [asset: "81HnQ1PWViWUiv39NGkPjbfDehW1edjeJe6XxVhw1TPZ"],
  [asset: "5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3"],
  [asset: "51LxAtwBXapvvTFSbbh4nLyWFxH6x8ocfNvrXxbTChze"],
  [asset: "4uK8i4ThRGbehENwa6MxyLtxAjAo1Rj9fduborGExarC"],
  [asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8"],
  [asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu"]
]

account = [
  %{asset: "6GQkwHGyd769EghKQ6qXhAHG55JyaFjK7VGWEKSSg4Z8", balance: 1.0},
  %{asset: "51LxAtwBXapvvTFSbbh4nLyWFxH6x8ocfNvrXxbTChze", balance: 6.0e-6},
  %{asset: "GAAZu8fsWfrZBFgweMMAFEcjrW9CFRxPEqmGcbSGWVDF", balance: 3.0},
  %{asset: "2rdZt8RxEftbmz34HLBd7Au2icyScgAe5YoipeT7GwK2", balance: 1.0},
  %{asset: "8kGUk1XSG11ac6x2MRbdfjNNjBZYWBQb51fVjRswtVE5", balance: 1.1},
  %{asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu", balance: 0.05218729},
  %{asset: "81HnQ1PWViWUiv39NGkPjbfDehW1edjeJe6XxVhw1TPZ", balance: 1.0},
  %{asset: "9S7c4fnE7ikiKqML2fChhh81GVAdjaJG6oi5to5cuBZx", balance: 7.777777},
  %{asset: "9aD11HrBe3Foci8CFB5vXS7z4KuDEUivVrno4fjGsy9A", balance: 3.0},
  %{asset: "8ofu3VpEaVCFjRqLLqzTMNs5URKUUQMrPp3k6oFmiCc6", balance: 0.02140607},
  %{asset: "4iHpGiwYfTGkTGV9nK6xazF1U1PXWqmJEbYQD9cNFTGX", balance: 100.0},
  %{asset: "4FPuUYFPwgy6VBmSaHwrUdbvWTjRM9TR4jCpv2AhBMDD", balance: 411.0},
  %{asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS", balance: 0.00758563},
  %{asset: "7zoGYmqorrybHZRtrykZeshHtia176fzTuwdQq6bAjw2", balance: 10.0},
  %{asset: "6Ek49jWsUhUmX6SQ8yafqsjF9GT7e3sgqsv7P98yZSvX", balance: 0.7},
  %{asset: "7F1tNXLo4Yve4sJjV9bSajjYe5XCWFT6wXy2MNZMwPw4", balance: 1.0e-8},
  %{asset: "7oYXqADRKWBKG1w5gqEHywUuLkuZPQQ97u6fUysJARKg", balance: 6.671e-5},
  %{asset: "HAuRGL49DkHqqHUhQE68kBRyeCFQ8Nb75sAGfxAuZg8q", balance: 1.0},
  %{asset: "6CLCcJjnWyQfv5wfWo23vVXUyhMKUCSsWfZt173bjWuD", balance: 1.0e-8},
  %{asset: "59bGdjHVEcTtwSXWSMvWjuJWjkpVJfJ7yXz22kU8BJWk", balance: 19.0},
  %{
    asset: "Ck3SukWWcSnoXZqVsnNkiuMxY7e91uLQeS38EHpcnsQj",
    balance: 117.63136661
  },
  %{asset: "HyLENA7Gf88T3NCkVXN954qTupVrrEECTgJmbpjRx8dT", balance: 2.0e4},
  %{asset: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck", balance: 0.03},
  %{asset: "8afiGs2qjrXWJpePcGPKSWWtBquo2BQbRqd94G9WtvaN", balance: 8.17027674},
  %{asset: "7KTuVkQ7QfSLQ9KRaQiBi2XSznu4sxNNm8zX9Jna7xAz", balance: 220.0},
  %{asset: "DBWndytPParmtEzH3sHmNg2ufpFXuXimPEtmUpu8VrXg", balance: 2.0e3},
  %{
    asset: "3MV4HfJFZ5A93fZGRXEWKW5Hvq2AzKFk5zaeJazGkdUW",
    balance: 360.36036036
  },
  %{asset: "qi3hHwPD5Y2WCVMZBiPPQAfQT9w2jzwNDfTUoAenY68", balance: 0.02},
  %{asset: "EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5", balance: 5.0e-8},
  %{asset: "DbngchPv6y1an7TQHQPEQ3uMj5ms5Qd46QVTgbgZ6ht3", balance: 1.0e3},
  %{asset: "Dj5Qd92JcymE9D45X12LavQnkEXVJ3mC3odbEt2WG1bN", balance: 1.0},
  %{asset: "AcrRM9STdBu5PNiFveTCbRFTS8tADhKcsbC2KBp8A4tx", balance: 0.005},
  %{asset: "8GXE112eMknj35KYqAZWr5DjbPmuh4AeAdzneVMcmmsY", balance: 1.0e-8},
  %{asset: "aMZArgtGZmiZekkv3vT71KWbgqvgAAKFX42Yg4okfxp", balance: 88.0},
  %{asset: "mFDfkDDozcZkJhFbBjq6AzSZm88hprLipcDVo9ZCCxW", balance: 1.00000001},
  %{asset: "FVxhjrxZYTFCa9Bd4JYhRqXTjwKuhYbSAbD2DWhsGidQ", balance: 1.0e-8},
  %{asset: "BS1KFNR8zrXKBEWdUUvpaP6G57Hic3aESkwK7qQKdLpB", balance: 250.0},
  %{asset: "63Z7NaULZyXF6m68AKf6DYCfsNGF1C4aEqRR17KPqBhW", balance: 1.0},
  %{asset: "eDUkBVzh65SZb7E7D1seU6nGjWr4q8mKs8ndiHGdbAf", balance: 1.0e-8},
  %{asset: "3gvEWpcTAp4H1qPfeDQZ9NagtHYXRmPnZeQuvz4Yk9rV", balance: 1.0e-5},
  %{asset: "ELb8jtKQWsE2vYHD3Bv6Jnb9p6qG64abHkHxVfg5h8L1", balance: 200.0},
  %{asset: "2fiCMUZgBZHs7DtwjyTET8gyToNNX1X5r8zUaouqoztQ", balance: 10.0},
  %{asset: "9syZhuGAkDG9XUMtxER5JKi6EubPwmgdn4sLodz9X3av", balance: 5.0},
  %{asset: "7ogZiMyzWcAdPPk8QTcLRaxPUDaUADiiLXEGcJjFu9qf", balance: 1.5e-7},
  %{asset: "E6Re9Vke39wRxYpxLURe89vMLgtqwgpsHrHsjHEyUVpD", balance: 106.0},
  %{asset: "AaF972D7psqaHZDCb15NFR5y6GKRw3XGeiNd6UekqsGs", balance: 10.0},
  %{asset: "HQagEU6Hqha7fmCDoekM3Z2mLJuFHsXmTdH2XADgwpA1", balance: 1.0e-8},
  %{asset: "6R2d8T2RsbNx7ZidWt6ifm2eGDfJVVYnapsfGo9fc7P9", balance: 0.011},
  %{asset: "496uReqiKiWZkgpf7MPyAVjvpt4mKiLEjVPTCchg5KdJ", balance: 1.0e-8},
  %{asset: "33Kb923fkhGAouT5ugXRxye6kSXMpQCXLVPxR2dDGiat", balance: 1.0e4},
  %{asset: "AgtFtRaec3w59yCdhD2QtWRNCnwapJdAfd8RT3ZAHeMc", balance: 4.0},
  %{asset: "ApjWu65rCmXZSNpCj48eVLR6YenWheLo6VPRptnPySJv", balance: 6.0e4},
  %{asset: "HTVQszkc2gZHwKx5KK9tsYFNhaGiNWJ3p9vjcWYeuFa2", balance: 1.0e-6},
  %{asset: "32czH6P73MC1kynEmUds1uVbfCCEdFaCt8MJVREduwC8", balance: 1.0e-5},
  %{asset: "882VjGQB5mnaF8ydzNvFdHiqB7i2Bej1wG3B1fBweMAy", balance: 14.42001322},
  %{asset: "6DDxq2jum9d7CNNwuh15NLGTci4TzgXPU3QfMBvJmQHR", balance: 2.0e-8},
  %{asset: "2mX5DzVKWrAJw8iwdJnV2qtoeVG9h5nTDpTqC1wb1WEN", balance: 0.01},
  %{asset: "8oTgQP8ppiQEnH7iN96qH7jvGD7ymQoyPEE57SMxrhMB", balance: 0.1},
  %{asset: "9N6Gfy8QQQduVh8wHr8KHp7XrBAdgzQcQ2VstFJaBrp", balance: 4.00003993},
  %{asset: "9JKjU6U2Ho71U7VWHvr14RB7iLpx2qYBtyUZqLpv6pVB", balance: 0.00111111},
  %{asset: "7FYxVxCjtsVVjbigJ4v8Aqvq1yaaNopkEiv7AYLLG8Xi", balance: 1.0e-8},
  %{asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk", balance: 2.176e-5},
  %{asset: "45xvtRRxjxJWPHAkVibBJpaWLGZ2B3WK11Qr6wBnvsNJ", balance: 4.0e4},
  %{asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK", balance: 5.4682},
  %{asset: "62LyMjcr2DtiyF5yVXFhoQ2q414VPPJXjsNYp72SuDCH", balance: 1.6444e-4},
  %{asset: "34oUTgXAqoLCKX5hq3xhPvK6gdMH4mCCDQKyTk9939h4", balance: 1.0},
  %{asset: "H1wEuM2ceecYixC3tZ49Nz6tUzkZf5ffSNqvVXEz3ZXZ", balance: 1.0},
  %{asset: "9BxndR4pQnh7oZoPMRymtmXtDeX8id3G742s4YFXcTD9", balance: 60.0},
  %{asset: "3TSurc3K8rBi3RhDtGv65eqJeFWDrPmEbojZ5JbeobEw", balance: 1.26},
  %{asset: "6KXoegwYmcwfX5nE4TncdAzYMZTnJoHjvtQBPctHz5mc", balance: 4.4e-4},
  %{asset: "FJTs9cC9hcNvhawNzs4xhiiZdxFa6fCG9isZbjCdo3Kd", balance: 100.0},
  %{asset: "FzHGT5ETPnSyYuyovpRygibpS4KLcPA1nT1dnaR6wUEN", balance: 1.0},
  %{asset: "C7taKh5d2vaBXkC4MZYPZhY5sCyfR8GdPvSiYYmETwjq", balance: 0.02},
  %{asset: "8Yw4QmskrQauQeNjgh2fTQ4swmkNm85GTQzdHEf6QdUU", balance: 21.08167447},
  %{asset: "G9ctfU74orqxaREMwhwNbsz3KRTBuL8o8QL9ghqS5gLS", balance: 0.0002},
  %{asset: "HmL1r1i4S1FfSj1snnyNKZCdEFGpoe9E3ERRgkHp8NLg", balance: 1.0},
  %{asset: "9n59nsKt1f49Bp6VMjDrXjecHmtcfdQH6my3z3cDD949", balance: 2.0e-6},
  %{asset: "6d9FwFo4bnSkqbpHhTgkizC6rxzqmnXEXgFszWuwmQYF", balance: 0.025},
  %{asset: "UvtsSWNb3bUWu3rnzKvn3YHqpyCVyRabsRsgC6vgRAP", balance: 1.0e-8},
  %{asset: "EFndUcqoAWm9rotMw5NNykMdmZVjHdxTNezb2WCv1SGJ", balance: 1.1},
  %{asset: "6PAjn16kECAPxbf1Tsh9Zy4HnGAzKSrAGcYEVghtkToa", balance: 1.0},
  %{asset: "3SDeUj6SKZceF3jPVVAAWrqA61WCAR3vx2XWbvsH6vir", balance: 0.001},
  %{asset: "43SjibPyAtSCoLHWD1hYi6hyZFcWFe95efPkpUJzpHyT", balance: 0.007806},
  %{asset: "87baXkx7iLKhxL6Ghx2kchxbWXHcvwckXheSeoHruxhz", balance: 1.0e-8},
  %{asset: "BkBnNN4Ui6F1Jjq1VKWxd5PqYUP9YEpTNzEi5a8Hr2gP", balance: 1.01},
  %{asset: "4A6S71B7auHqa89cGHk8uGzhPGyx9fFnRkSYHWS7SB9d", balance: 157.0},
  %{asset: "3xDS1RcesKpnYy9xrS4gmVBq7RGnbtwF3KuJ6siwPomk", balance: 80026.0},
  %{asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J", balance: 0.01},
  %{asset: "F6sL5jK8moEWdFjXBKvDaHWq921rdzKpmoNAE1XoZNhL", balance: 1.0e-8},
  %{asset: "28eMnvjW9kFZ7D7tUeqCEfFZkFeEg2DyJc5yYi6gDjzM", balance: 1.0},
  %{asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8", balance: 47.92501839},
  %{asset: "D89QkQt6L7ucL6Ttbu3DdWHsYrGse7iQs3Y5QJiGtTXJ", balance: 1.0},
  %{
    asset: "6HKGF4FkqiMNbXG1S9ofaosZKtxSwmCDduPmXHDPKJt4",
    balance: 778.57731092
  },
  %{asset: "76z7aAqKbLJcjLCcvHrgkd4EtJB4xGyxqZsVUnQu8gCj", balance: 2.9},
  %{asset: "CUrS6BkWPJVniWE7zh8LyN7PYehMa5WxSKUz3jaGdU2C", balance: 0.5},
  %{asset: "GuMsWAANLANA8kvBNsssWpn4S42DQ5b8nmHydBU5YMv6", balance: 1.0},
  %{asset: "GqjLuAgVobWaQCuynXjG13Mjf9ZTH85eddEMPo2HCR9E", balance: 10.0},
  %{asset: "BgVuAXX6TqWgyn8feQLaLvbz3VFkTd1LRor16Fx4f7Hv", balance: 0.01},
  %{asset: "5qY2aX7uWLKQnsWYk65w551epXBBJt6Rpf7VGTMiRCCw", balance: 12.1830276},
  %{asset: "8sjzi4otKssS34aYL6Cwc9rKQ5HXw9oKp8zXJaXa2VwR", balance: 0.002},
  %{asset: "GNzJDeswxftpvssBFkcUSjNNCBrwv7tdWHq6UnfhsZcx", balance: 12.0},
  %{asset: "FG476mVqV1xAFYMR4Uu4Rj7WA27VSW6WYzT83rXTxuL7", balance: 1001.0},
  %{asset: "6mWB64UKB8QxW4L3wwmA9ZGt4kJbuLbbYaC88twnK19Y", balance: 30.0},
  %{asset: "4uK8i4ThRGbehENwa6MxyLtxAjAo1Rj9fduborGExarC", balance: 0.01},
  %{asset: "9DvjWMc1En6YKzFtpZo6d5MAsDbzjFcRYRdiT1FJvyKs", balance: 1.0},
  %{asset: "AvtGyWQkttVqeJFDnooXXW1e6UFWG56hWi2edAApgiwo", balance: 7.01},
  %{asset: "6KNqNW7LD1cb1KBJffeWMUQrtdSaWqbMgJLZoGumk4nK", balance: 47.92501839},
  %{asset: "jZGum2QcU3QuQTFaYgAhp5xbxPaF2ASMaymCzWwXZpu", balance: 1.0e3},
  %{asset: "Dd3ppdB8zuW8gEJK5RamNmNngo4BjcxC9gHM1ZDX2smF", balance: 5.8914e-4},
  %{asset: "Dfo1sz86bS6K2oRNF7hQ16LGbPhpccP7CFTPXftUPbL7", balance: 3.0e-8},
  %{asset: "B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H", balance: 1.0e-8},
  %{asset: "HzfaJp8YQWLvQG4FkUxq2Q7iYWMYQ2k8UF89vVJAjWPj", balance: 3.42e-6},
  %{asset: "747iq9eFmMP6xMkWhP6pDf3iLBtDt2c6FzudfjSizP3e", balance: 0.1},
  %{asset: "725Yv9oceWsB4GsYwyy4A52kEwyVrL5avubkeChSnL46", balance: 1.0e-8},
  %{asset: "EEazYfNWspbhD1viq9S7zUWJ74owa27MhKUk9eRi1oU1", balance: 1.3e-7},
  %{asset: "7w4est5xZYdm37poTNf4sHmvz1SrcS5kaeTzsUMi8Ser", balance: 7.7e-4},
  %{asset: "bPWkA3MNyEr1TuDchWgdpqJZhGhfPXj7dJdr3qiW2kD", balance: 1.9e-7},
  %{asset: "GgvUwAvJhrWwT1j2Q7B8qbnGJ3dDYs4xWrWDdvtSztXS", balance: 0.1},
  %{asset: "4eT6R8R2XuTcBuTHiXVQsh2dN2mg3c2Qnp95EWBNHygg", balance: 4.2e-7},
  %{asset: "5Nm968edbYa5D6kTqf1oYA5VK7hS7REmU2k5X4zZbyje", balance: 0.0001},
  %{asset: "BDh7YQs3Ugv2tkGhkpe5M5eD1eg9nysFu1zyumMcXfTG", balance: 0.1},
  %{asset: "ApBLJGqG5bVTuzyhLaHg9kdcvnPetBKP8ALkSV3c3rRP", balance: 1.0e-8},
  %{asset: "AyRoYDrBPGfd2HZxsDrx6tRnGhCU58PqRG5yZT2acBVG", balance: 1.0},
  %{asset: "FZNHSm4sVENS9kr2mKe5MzHy2hDfYHcXmiC2v4kFs5PN", balance: 9.0},
  %{asset: "F7NMu8o3bZZuMdXcXfGcdJMhkMVttyvKjxLpXeQ1CYM9", balance: 0.0001},
  %{asset: "8Bc3p4q7rje5yUs72zpudwYfyemTERbDDsZCpjqebTfc", balance: 0.055},
  %{asset: "5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3", balance: 0.01668726},
  %{asset: "FcaW2snEEbTH8nYWfms9FjfNUW57RcR2Vj2HEyosX72V", balance: 0.0049},
  %{asset: "4kWB8EQSufJdJ91RRXZw8GDpPA7tjWvNeC587USaA5FE", balance: 0.0021014},
  %{asset: "GnNPE23TtqUC2yRZRZepTwZMTNb2uWNscQS551wFr9gn", balance: 3.0},
  %{asset: "DacnEpaUVFRCYk8Fcd1F3cqUZuT4XG7qW9mRyoZD81zq", balance: 3.1e-7},
  %{asset: "zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy", balance: 4.7e-7},
  %{asset: "Gq6Lk6z1QgmhwZ43AhzfxzfjHWkDLam78BLzZ4ojQ4nq", balance: 1.33e-6},
  %{asset: "FEckC1jCCxc5nMeeJo4eiVXFWHEpo3ADPkaUDsPzWPTj", balance: 1.0e3},
  %{asset: "5ZPuAVxAwYvptbCgSVKdTzeud9dhbZ7vvxHVnZUoxf4h", balance: 1.5561e-4},
  %{asset: "gnoAVs6Fm8e9PsbdGV2thGJkCaJ6xnyLeu5Lp8o2JuU", balance: 6.85848396},
  %{asset: "HAeFQrVABF9UwYUJtCQLoYZ6yY7Z6752JNyT9nYKNdxL", balance: 90.0}
]

Failed attempt:

iex(3)> Enum.filter(account, &(&1).asset in liquid_assets)
[]

Desired result:


[
  [asset: "zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy", balance: 4.7e-7}],
  [asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk" balance: 2.176e-5],
  [asset: "EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5" balance: 5.0e-8],
  [asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK" balance: 5.4682],
  [asset: "Dj5Qd92JcymE9D45X12LavQnkEXVJ3mC3odbEt2WG1bN" balance: 1.0],
  [asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J" balance: 0.01],
  [asset: "B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H" balance: 1.0e-8],
  [asset: "8sjzi4otKssS34aYL6Cwc9rKQ5HXw9oKp8zXJaXa2VwR" balance: 0.002]
  ...
  ]

What’s the best way to accomplish this?

What is in liquid_assets from your code?
If it looks like this

liquid_assets = Enum.map(liquid, & &1[:asset])

then your solution will provide correct result.

1 Like

It seems that liquid is a list of lists, maybe it is better to set it as a tuple?

Anyway, I think this may be the code you were trying to achieve:

Enum.filter(account, &[asset: (&1).asset] in liquid)
1 Like

That worked, thanks!

Why, precisely, do you feel liquid would work better as a tuple?

 asset: "..."

creates the tuple:

{:asset, "..."} 

While

[asset: "..."]

syntax creates a list holding the tuple.
So: hd([asset: β€œβ€¦β€]) returns {:asset, β€œβ€¦β€} and tl([asset:"…"]) returns []
It seems like you are warping the tuple with a list that only holds the tuple.