繁体   English   中英

将列表转换为元组列表

Transform list to list of tuple

提示:本站收集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”],

2 个回复

首先,使用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/2List.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)

做工作。

1 将元组转换为列表

我需要将不同的元组转换为字符串列表。 如何将包含不同类型的元组转换为 C# 中的字符串列表? 当然,我需要针对不同元组的通用解决方案。 例子: 我想将此元组转换为列表:("word", 1, 's', US) ...

3 将列表转换为元组

我有以下代码,给我以下错误:“ TypeError:unhashable type:'Card'”,其中card是定义西服并在一副纸牌中排名的类。 例如card.Card(2,2)对应于“钻石2”。 我有下面的提示,即“我必须将列表编码为元组,因为列表不能是字典键”; 任何想法如何实现这一 ...

4 将列表转换为元组

我有几个命令行选项(例如5个),我想将它们转换为元组。 问题是我希望它们以正确的顺序出现,因此可以使用模式匹配从列表轻松构建元组,但是在现实生活中可以按随机顺序提供选项,所以我不知道列表头是否包含详细选项或日志文件名? 我试图思考如何使用延续传递样式来做到这一点,但是我没有想到有用的东西 ...

6 将元组转换为列表

我已经搜索过,但奇怪的是没有找到太多关于此的内容。 如何将未知长度的元组转换为序言中的列表? 例如: ...

7 将列表内的元组转换为列表

我坚持这个非常基本的问题。 如何将列表中的元组转换为列表。 例如, [(23,5,6,4)]=>[23,5,6,4] 这是一个非常基本的问题,我已经使用for循环完成了此操作。 但是有更好的办法吗? ...

2014-06-25 17:10:23 3 727   python
8 将元组列表转换为列表

这似乎比我想象的要麻烦得多,所以请在这里需要一些帮助。 进行sql提取时,它给了我一个元组列表,如下所示: 如何删除所有括号和括号,使其仅显示两行。 (将整数保留在字符串中非常重要。我想要的输出如下所示: 以下内容似乎无效: 似乎其中一行是整数类型而另一行是字符串类型 ...

9 将列表转换为列表的元组

我有一个numpy ndarray,需要将其转换为多处理器列表的元组。池才能对其进行操作。 我已经将此ndarray转换为此处显示的列表: 为了提供此文件列表作为参数,我相信我需要此列表成为此处显示的列表的元组: 我对如何将此文件名列表转换为文件名列表元组感兴趣。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM