我需要将不同的元组转换为字符串列表。 如何将包含不同类型的元组转换为 C# 中的字符串列表? 当然,我需要针对不同元组的通用解决方案。 例子: 我想将此元组转换为列表:("word", 1, 's', US) ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我有一个这样的清单清单:
[
["5b71d7e458c37fa04a7ce768", "5b3f77502dfe0deeb8912b42", "1538077790705827"],
["5b71d7e458c37fa04a7ce768","5b3f77502dfe0deeb8912b42","1538078530667847"],
["5b71d7e458c37fa04a7ce768","5b3f77502dfe0deeb8912b42","1538077778390908"],
["5b71d7e458c37fa04a7ce768","5bad45b1e990057961313822","1538082492283531"]
]
我想将其转换为类似的列表:
[
{"5b3f77502dfe0deeb8912b42",
[{"5b71d7e458c37fa04a7ce768","5b3f77502dfe0deeb8912b42", "1538077790705827"},
{"5b71d7e458c37fa04a7ce768","5b3f77502dfe0deeb8912b42", "1538078530667847"},
{"5b71d7e458c37fa04a7ce768", "5b3f77502dfe0deeb8912b42" ,"1538077778390908"}
]},
{"5bad45b1e990057961313822",
[{"5b71d7e458c37fa04a7ce768","5bad45b1e990057961313822","1538082492283531"}
]}
]
因此,键将在原始列表的第二项之外创建元组
[“ 5b71d7e458c37fa04a7ce768”, “ 5b3f77502dfe0deeb8912b42” ,“ 1538077790705827”],
首先,使用Enum.group_by
列表的第二个元素。 然后,将结果映射值的每个值映射到List.to_tuple
。 Enum.map
与地图Enum.map
使用时会自动将每个键/值对转换为元组。
list = [
["5b71d7e458c37fa04a7ce768", "5b3f77502dfe0deeb8912b42", "1538077790705827"],
["5b71d7e458c37fa04a7ce768", "5b3f77502dfe0deeb8912b42", "1538078530667847"],
["5b71d7e458c37fa04a7ce768", "5b3f77502dfe0deeb8912b42", "1538077778390908"],
["5b71d7e458c37fa04a7ce768", "5bad45b1e990057961313822", "1538082492283531"]
]
list
|> Enum.group_by(&Enum.at(&1, 1))
|> Enum.map(fn {k, v} -> {k, Enum.map(v, &List.to_tuple/1)} end)
|> IO.inspect
输出:
[
{"5b3f77502dfe0deeb8912b42",
[
{"5b71d7e458c37fa04a7ce768", "5b3f77502dfe0deeb8912b42",
"1538077790705827"},
{"5b71d7e458c37fa04a7ce768", "5b3f77502dfe0deeb8912b42",
"1538078530667847"},
{"5b71d7e458c37fa04a7ce768", "5b3f77502dfe0deeb8912b42",
"1538077778390908"}
]},
{"5bad45b1e990057961313822",
[
{"5b71d7e458c37fa04a7ce768", "5bad45b1e990057961313822",
"1538082492283531"}
]}
]
我将使用地图根据第二个元素对列表列表进行索引,然后使用Enum.map/2
和List.to_tuple/1
对其进行转换。
如果
l = [
["5b71d7e458c37fa04a7ce768", "5b3f77502dfe0deeb8912b42", "1538077790705827"],
["5b71d7e458c37fa04a7ce768","5b3f77502dfe0deeb8912b42","1538078530667847"],
["5b71d7e458c37fa04a7ce768","5b3f77502dfe0deeb8912b42","1538077778390908"],
["5b71d7e458c37fa04a7ce768","5bad45b1e990057961313822","1538082492283531"]
]
然后
l
|> Enum.reduce(%{}, fn [a,b,c], acc -> put_in(acc[b], (acc[b] && acc[b] || []) ++ [[a,b,c]]) end)
|> Enum.map(fn {a,b} -> {a, Enum.map(b, &List.to_tuple/1)} end)
做工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.