Python Group Array by Column和Display Unique Values

时间:2016-02-08 17:57:46

标签: python arrays

我有一个阵列数组,格式如下:

x = [["Username1","id3"],
["Username1", "id4"],
["Username1", "id4"],
["Username3", "id3"]]

我想按ID分组并显示所有唯一的用户名 我如何获得类似的输出:

  

id3:用户名1,用户名3

     

id4:用户名1

编辑:能够按第二列分组,但我不仅可以显示唯一值。这是我的代码:

data={}
for key, group in groupby(sorted(x), key=lambda x: x[1]):
    data[key]=[v[0] for v in group]
print(data)

2 个答案:

答案 0 :(得分:1)

使用dict id pythons sets创建唯一键来存储值(因此您只能存储该键的唯一名称):

items = [
    ["Username1","id3"],
    ["Username1", "id4"],
    ["Username1", "id4"],
    ["Username3", "id3"]
]

data = {}
for item in items:
    if data.has_key(item[1]):
        data[item[1]].add(item[0])
    else:
        data[item[1]] = set([item[0]])
print(data)

答案 1 :(得分:0)

您可以使用for循环,但使用linq语句可能更清晰,以备将来使用。

https://stackoverflow.com/a/3926105/4564614

有一些很好的方法可以合并linq来解决这个问题。我认为你要找的是分组。

示例:

from collections import defaultdict
from operator import attrgetter

   def group_by(iterable, group_func):
       groups = defaultdict(list)
       for item in iterable:
           groups[group_func(item)].append(item)
       return groups

   group_by((x.foo for x in ...), attrgetter('bar'))