我看到一个完全由元组组成的列表,例如:
lst = [("hello", "Blue"), ("hi", "Red"), ("hey", "Blue"), ("yo", "Green")]
Run Code Online (Sandbox Code Playgroud)
我怎样才能lst分成与颜色一样多的列表?在这种情况下,3个列表
[("hello", "Blue"), ("hey", "Blue")]
[("hi", "Red")]
[("yo", "Green")]
Run Code Online (Sandbox Code Playgroud)
我只需要稍后能够使用这些列表,所以我不想只是将它们输出到屏幕上。
名单详情
我知道 的每个元素lst都是严格的双元素元组。颜色也始终是每个元组的第二个元素。
问题
问题是,lst取决于用户输入,所以我不会总是知道总共有多少颜色以及它们是什么。这就是为什么我不能预定义变量来存储这些列表。
那么如何做到这一点呢?
我有大量的二元子列表,它们是名为 的列表的成员mylist:
mylist = [['AB001', 22100],
['AB001', 32935],
['XC013', 99834],
['VD126', 18884],
['AB001', 34439],
['XC013', 86701]]
Run Code Online (Sandbox Code Playgroud)
我想根据mylist子列表是否包含与第一项相同的字符串来排序新的子列表。例如,这就是我正在寻找要输出的代码:
newlist = [['AB001', 22100], ['AB001', 32935], ['AB001', 34439]],
[['XC013', 99834], ['XC013', 86701]],
[['VD126', 18884]]
Run Code Online (Sandbox Code Playgroud)
这是我尝试编码的方式:
mylist = sorted(mylist)
newlist = []
for sublist in mylist:
id = sublist[0]
if id == next.id:
newlist.append(id)
print newlist
Run Code Online (Sandbox Code Playgroud)
我还试图了解是否itertools.groupby()是解决此问题的正确工具。有人可以帮我解决这个问题吗?