Hướng dẫn how to group dictionary in python by key? - làm thế nào để nhóm từ điển trong python theo khóa?

Sử dụng collections.defaultdict để dễ dàng:

from collections import defaultdict v = defaultdict(list) for key, value in sorted(d.items()): v[value].append(key)

Nhưng bạn cũng có thể làm điều đó với tiêu chuẩn dict, sử dụng v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 0:

v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key)

Các phím loại trên đầu tiên; Sắp xếp các giá trị của từ điển đầu ra sau này cồng kềnh và không hiệu quả hơn nhiều.

Nếu bất cứ ai không cần đầu ra được sắp xếp, bạn có thể bỏ cuộc gọi v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 1 và sử dụng các bộ (các khóa trong từ điển đầu vào được đảm bảo là duy nhất, do đó không có thông tin nào bị mất):

v = {} for key, value in d.items(): v.setdefault(value, set()).add(key)

để sản xuất:

{6: {1}, 1: {2, 3, 6}, 9: {4, 5}}

(rằng đầu ra của các giá trị đã được sắp xếp là một sự trùng hợp ngẫu nhiên, một tác dụng phụ về cách thức các giá trị băm cho các số nguyên được thực hiện; tập hợp là các cấu trúc không đặt hàng).

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Trong khi thực hiện các tính toán qua từ điển, chúng ta có thể gặp phải một vấn đề trong đó chúng ta có thể phải thực hiện nhiệm vụ nhóm các khóa theo giá trị, tức là tạo một danh sách các khóa, nó là giá trị. Điều này có thể khác trong các trường hợp tổ chức dữ liệu trong trường hợp học máy. Hãy để thảo luận về cách nhất định trong đó nhiệm vụ này có thể được thực hiện. DefaultDict () được sử dụng để tạo từ điển được khởi tạo với danh sách, các mục () Nhận cặp giá trị khóa và nhóm được giúp đỡ bằng cách sắp xếp (). & NBSP;
    Method : Using sorted() + items() + defaultdict() 
    This task can be performed by combining the tasks which can be done by above functions. The defaultdict() is used to create a dictionary initialized with lists, items() gets the key-value pair and grouping is helped by sorted().
     

    Python3

    v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 2 v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 3v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 4 v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 5

    v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 6v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 7 v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 8v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 9 v = {} for key, value in d.items(): v.setdefault(value, set()).add(key) 0v = {} for key, value in d.items(): v.setdefault(value, set()).add(key) 1v = {} for key, value in d.items(): v.setdefault(value, set()).add(key) 223

    {6: {1}, 1: {2, 3, 6}, 9: {4, 5}} 9The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}0The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}1 ________ 42 & nbsp; The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}3The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}4

    The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}5v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 7 The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}7The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}8The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}9

    {'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}0 {'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}1{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}2 {'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}3{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}4

    {'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}5{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}6

    {6: {1}, 1: {2, 3, 6}, 9: {4, 5}} 9The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}0{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}9 The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}2 The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}3The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}0dictdef grouping_dictionary(l): result = {} for k, v in l: result.setdefault(k, []).append(v) return result colors = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] print("Original list:") print(colors) print("\nGrouping a sequence of key-value pairs into a dictionary of lists:") print(grouping_dictionary(colors)) 4

    Output:

    The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}

    Phương pháp 2:

    Ngoài ra, nhiệm vụ này cũng có thể được thực hiện mà không cần sử dụng bất kỳ mô -đun nào. & NBSP; Vì vậy, logic ở đây là: & nbsp; chúng tôi có thể kiểm tra xem các khóa có có hay không & nbsp; 1. Không, sau đó chúng ta có thể tạo khóa res [v] = [i] & nbsp; 2. Có, chúng ta có thể nối giá trị trên khóa Res [v] + [i] & nbsp; & nbsp;
    So the logic here is: 
    We can check if the keys are present or not 
    1. No, then we can create key res[v] = [i] 
    2. Yes, we can append value on the key res[v] + [i] 
     

    Python3

    def grouping_dictionary(l): result = {} for k, v in l: result.setdefault(k, []).append(v) return result colors = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] print("Original list:") print(colors) print("\nGrouping a sequence of key-value pairs into a dictionary of lists:") print(grouping_dictionary(colors)) 5v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 7 v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 8def grouping_dictionary(l): result = {} for k, v in l: result.setdefault(k, []).append(v) return result colors = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] print("Original list:") print(colors) print("\nGrouping a sequence of key-value pairs into a dictionary of lists:") print(grouping_dictionary(colors)) 8____________Original list: [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] Grouping a sequence of key-value pairs into a dictionary of lists: {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]} 0v = {} for key, value in d.items(): v.setdefault(value, set()).add(key) 22222

    The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}5v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 7 collections.defaultdict2

    {'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}0 collections.defaultdict4{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}2 collections.defaultdict6

    {'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}5___

    {6: {1}, 1: {2, 3, 6}, 9: {4, 5}} 9v = {} for key, value in sorted(d.items()): v.setdefault(value, []).append(key) 01

    Output:

    {'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}

    Hàm itertools trong Python cung cấp một cách hiệu quả để lặp lại danh sách, bộ dữ liệu và từ điển. Chức năng itertools.groupby trong itertools sẽ được áp dụng trong hướng dẫn này để nhóm A Danh sách các từ điển bằng một khóa cụ thể.

    Để minh họa cách thức hoạt động của nó, chúng tôi sẽ xem xét một danh sách các thông tin của sinh viên (trong từ điển) và cố gắng nhóm những điều này theo khóa học của lớp

    Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:51:49 (UTC/GMT +8 giờ)

    Từ điển Python: Bài tập-46 với giải pháp

    Viết một chương trình Python để tạo một từ điển nhóm một chuỗi các cặp giá trị khóa thành một từ điển danh sách.

    Giải pháp mẫu::

    Mã Python:

    def grouping_dictionary(l): result = {} for k, v in l: result.setdefault(k, []).append(v) return result colors = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] print("Original list:") print(colors) print("\nGrouping a sequence of key-value pairs into a dictionary of lists:") print(grouping_dictionary(colors))

    Đầu ra mẫu:

    Original list: [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] Grouping a sequence of key-value pairs into a dictionary of lists: {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]}

    Trình bày bằng hình ảnh:

    Flowchart:

    Trực quan hóa thực thi mã Python:

    Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực hiện chương trình đã nói:

    Trình chỉnh sửa mã Python:

    Có một cách khác để giải quyết giải pháp này? Đóng góp mã của bạn (và nhận xét) thông qua Disqus.

    Trước đây: Viết chương trình Python để kiểm tra tất cả các giá trị là giống nhau trong từ điển. Write a Python program to check all values are same in a dictionary.
    Next: Write a Python program to split a given dictionary of lists into list of dictionaries.

    Làm cách nào để có được một danh sách các giá trị chính trong từ điển?

    Sử dụng người vận hành giải nén có thể giải nén thay thế, bạn có thể gọi dict. chức năng khóa () để làm cho mã của bạn rõ ràng hơn. Để có được một danh sách các giá trị của từ điển, bạn có thể gọi hàm dict.values ​​().call the dict. values() function.

    Làm thế nào để bạn kết hợp các giá trị trong một từ điển?

    Làm thế nào để hợp nhất từ điển trong Python..
    Sử dụng một vòng lặp ..
    Sử dụng dict.Cập nhật () Phương thức ..
    Sử dụng toán tử ** ..
    Sử dụng |(Liên minh) Nhà điều hành (cho Python 3.9 trở lên).

    Làm thế nào để tôi kết hợp một từ điển trong Python?

    Dưới đây là tám phương pháp tiêu chuẩn mà bạn có thể hợp nhất hai từ điển trong Python ...
    1) Sử dụng phương thức Update () ..
    2) Sử dụng toán tử hợp nhất (|) ..
    3) Sử dụng toán tử ** ..
    4) Giải nén từ điển thứ hai ..
    5) Sử dụng Phương thức Collection.ChainMap () ..
    6) Sử dụng itertools.....
    7) Sử dụng khả năng hiểu từ điển ..
    8) Thêm giá trị của các khóa chung ..

    Từ điển Python có thể có danh sách chính không?

    Thứ hai, một khóa từ điển phải thuộc loại bất biến.Ví dụ: bạn có thể sử dụng số nguyên, phao, chuỗi hoặc boolean làm khóa từ điển.Tuy nhiên, cả danh sách và từ điển khác đều không thể đóng vai trò là khóa từ điển, bởi vì danh sách và từ điển đều có thể thay đổi.neither a list nor another dictionary can serve as a dictionary key, because lists and dictionaries are mutable.

    Chủ đề