Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python按列分组数组并显示唯一值_Python_Arrays - Fatal编程技术网

Python按列分组数组并显示唯一值

Python按列分组数组并显示唯一值,python,arrays,Python,Arrays,我有一个数组,其格式如下: x = [["Username1","id3"], ["Username1", "id4"], ["Username1", "id4"], ["Username3", "id3"]] 我想按ID分组并显示所有唯一的用户名 如何获得如下输出: id3:Username1,Username3 id4:Userna

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

x = [["Username1","id3"],
["Username1", "id4"],
["Username1", "id4"],
["Username3", "id3"]]
我想按ID分组并显示所有唯一的用户名 如何获得如下输出:

id3:Username1,Username3

id4:Username1

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

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

使用
dict
通过id创建唯一的键并存储值(因此您将只存储该键的唯一名称):


您可以使用for循环,但对于将来的使用,使用linq语句可能更干净

有一些很好的方法来提高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'))

如何删除重复项?i、 e.id4仅显示用户名1一次
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'))