Hướng dẫn multiple rows in dictionary python - nhiều hàng trong python từ điển

Bạn có thể biến danh sách từ điển hiện tại thành một danh sách các từ điển đã bùng nổ và sau đó viết chúng cho CSV:

>>> import itertools as it
>>> [dict(n) for d in list_dic for n in zip(*(zip(it.repeat(k), v) for k, v in d.items()))]
[{'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 2, 'c': 2},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 2, 'c': 2},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 2, 'c': 2},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 2, 'c': 2}]

Điều này hoạt động với số lượng giá trị tùy ý:

>>> list_dic = [{'a':['x','y','z'],'b':[1,2,3],'c':[1,2,3]},
...             {'a':['x','y','a'],'b':[1,3,2],'c':[1,2,1]},
...             {'a':['x','y','b'],'b':[1,4,3],'c':[1,2,4]},
...             {'a':['x','y','a'],'b':[1,5,2],'c':[1,2,9]}]
>>> [dict(n) for d in list_dic for n in zip(*(zip(it.repeat(k), v) for k, v in d.items()))]
[{'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 2, 'c': 2},
 {'a': 'z', 'b': 3, 'c': 3},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 3, 'c': 2},
 {'a': 'a', 'b': 2, 'c': 1},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 4, 'c': 2},
 {'a': 'b', 'b': 3, 'c': 4},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 5, 'c': 2},
 {'a': 'a', 'b': 2, 'c': 9}]

Trong bài viết này, chúng tôi sẽ thảo luận về cách tạo và quản lý một từ điển trong đó các khóa có thể có nhiều giá trị.


Trong Python, nếu chúng ta muốn một từ điển trong đó một khóa có nhiều giá trị, thì chúng ta cần liên kết một đối tượng với mỗi khóa là giá trị. Đối tượng giá trị này nên có khả năng có các giá trị khác nhau bên trong nó. Chúng ta có thể sử dụng một tuple hoặc một danh sách làm giá trị trong từ điển để liên kết nhiều giá trị với một khóa.

Hãy để hiểu nó bằng một số ví dụ,

Tạo một từ điển với một danh sách là giá trị

# Create a dictionary where multiple values are
# associated with a key
word_freq = {'is': [1, 3, 4, 8, 10],
             'at': [3, 10, 15, 7, 9],
             'test': [5, 3, 7, 8, 1],
             'this': [2, 3, 5, 6, 11],
             'why': [10, 3, 9, 8, 12]}

Trong từ điển này, các khóa là các chuỗi và với mỗi chuỗi khóa, chúng tôi có một danh sách các số được liên kết như một trường giá trị. Vì vậy, về cơ bản, trong từ điển này, nhiều giá trị được liên kết với một khóa.

Những thứ liên quan,

Quảng cáo

  • Từ điển trong Python là gì và tại sao chúng ta cần nó?
  • Làm thế nào để tạo một từ điển trong Python?
  • Làm thế nào để chuyển đổi một danh sách thành từ điển trong Python?
  • Một từ điển có thể có các khóa trùng lặp trong Python không?

Nhận được nhiều giá trị của một khóa trong từ điển

Khi chúng tôi chọn một khóa trong từ điển này, nó sẽ cho giá trị của khóa đó. Trong trường hợp này, nó sẽ là một danh sách,

# Create a dictionary where multiple
# values are associated with a key
word_freq = {'is'   : [1, 3, 4, 8, 10],
             'at'   : [3, 10, 15, 7, 9],
             'test' : [5, 3, 7, 8, 1],
             'this' : [2, 3, 5, 6, 11],
             'why'  : [10, 3, 9, 8, 12] }


# Get multiple values of a key as list
value_list = word_freq['at']

print('Values of key "at" are:')
print(value_list)

Output:

Values of key "at" are:
[3, 10, 15, 7, 9]

Chúng tôi đã chọn mục từ từ điển trong đó khóa là ‘At và sau đó in tất cả các giá trị liên quan đến khóa này.

Đọc thêm về tìm kiếm nội dung trong từ điển,

  • Làm thế nào để có được tất cả các phím từ một từ điển?
  • Làm thế nào để có được tất cả các giá trị từ một từ điển?
  • Làm thế nào để tìm khóa theo giá trị trong từ điển?
  • Làm thế nào để lọc một từ điển dựa trên các điều kiện?

Nối nhiều giá trị vào một khóa trong từ điển

Tạo một từ điển với nhiều giá trị cho một khóa rất dễ dàng, nhưng phần khó khăn là nối thêm các giá trị khác nhau cho các phím.
Let’s understand by an example,

Giả sử chúng ta muốn thêm ba giá trị 20, 21, 22, cho một khóa trong từ điển. Chúng ta cần đảm bảo rằng nếu khóa đã tồn tại trong từ điển hay không.

  • Nếu có, thì hãy nối các giá trị mới này vào các giá trị hiện có của khóa.
  • Nếu không, sau đó và thêm một danh sách trống làm giá trị cho khóa đó và sau đó thêm các giá trị này trong danh sách đó.

Chúng tôi đã tạo ra một chức năng để thực hiện tất cả các công cụ đề cập ở trên,

def add_values_in_dict(sample_dict, key, list_of_values):
    ''' Append multiple values to a key in 
        the given dictionary '''
    if key not in sample_dict:
        sample_dict[key] = list()
    sample_dict[key].extend(list_of_values)
    return sample_dict

Bây giờ, hãy để sử dụng chức năng này để thêm nhiều giá trị cho một khóa,

word_freq = {'is'   : [1, 3, 4, 8, 10],
             'at'   : [3, 10, 15, 7, 9],
             'test' : [5, 3, 7, 8, 1],
             'this' : [2, 3, 5, 6, 11],
             'why'  : [10, 3, 9, 8, 12] }

# Append multiple values for existing key 'at'
word_freq = add_values_in_dict(word_freq, 'at', [20, 21, 22])

print('Contents of the dictionary: ')
print(word_freq)

Output:

{'is': [1, 3, 4, 8, 10],
 'at': [3, 10, 15, 7, 9, 20, 21, 22],
 'test': [5, 3, 7, 8, 1],
 'this': [2, 3, 5, 6, 11],
 'why': [10, 3, 9, 8, 12] }

Trong ví dụ này, Key ‘At, đã tồn tại trong từ điển; Do đó, nó đã thêm các giá trị mới trong danh sách các giá trị hiện có cho khóa ‘tại tại.

Ví dụ 2:

# Append multiple values for a new key 'here'
word_freq = add_values_in_dict(word_freq, 'here', [10, 11, 12])

print('Contents of the dictionary: ')
print(word_freq)

Output:

{'is': [1, 3, 4, 8, 10],
 'at': [3, 10, 15, 7, 9, 20, 21, 22],
 'test': [5, 3, 7, 8, 1],
 'this': [2, 3, 5, 6, 11],
 'why': [10, 3, 9, 8, 12],
 'here': [10, 11, 12] }

Trong ví dụ này, chìa khóa ’ở đây không tồn tại trong từ điển; Do đó, nó đã thêm khóa mới cùng với danh sách các giá trị được cung cấp.

Đọc thêm,

  • Làm thế nào để thêm các cặp khóa/giá trị vào một từ điển trong Python?
  • Làm thế nào để lặp lại một từ điển trong Python?

Tìm kiếm giá trị trong từ điển với nhiều giá trị cho một khóa

Giả sử chúng ta muốn kiểm tra xem một giá trị có tồn tại trong từ điển trong đó nhiều giá trị được liên kết với một khóa không. Sau đó, chúng tôi cũng muốn có được một danh sách các khóa chứa giá trị đã cho của chúng tôi. Hãy để xem cách làm điều này,

>>> list_dic = [{'a':['x','y','z'],'b':[1,2,3],'c':[1,2,3]},
...             {'a':['x','y','a'],'b':[1,3,2],'c':[1,2,1]},
...             {'a':['x','y','b'],'b':[1,4,3],'c':[1,2,4]},
...             {'a':['x','y','a'],'b':[1,5,2],'c':[1,2,9]}]
>>> [dict(n) for d in list_dic for n in zip(*(zip(it.repeat(k), v) for k, v in d.items()))]
[{'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 2, 'c': 2},
 {'a': 'z', 'b': 3, 'c': 3},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 3, 'c': 2},
 {'a': 'a', 'b': 2, 'c': 1},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 4, 'c': 2},
 {'a': 'b', 'b': 3, 'c': 4},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 5, 'c': 2},
 {'a': 'a', 'b': 2, 'c': 9}]
0

Output:

>>> list_dic = [{'a':['x','y','z'],'b':[1,2,3],'c':[1,2,3]},
...             {'a':['x','y','a'],'b':[1,3,2],'c':[1,2,1]},
...             {'a':['x','y','b'],'b':[1,4,3],'c':[1,2,4]},
...             {'a':['x','y','a'],'b':[1,5,2],'c':[1,2,9]}]
>>> [dict(n) for d in list_dic for n in zip(*(zip(it.repeat(k), v) for k, v in d.items()))]
[{'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 2, 'c': 2},
 {'a': 'z', 'b': 3, 'c': 3},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 3, 'c': 2},
 {'a': 'a', 'b': 2, 'c': 1},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 4, 'c': 2},
 {'a': 'b', 'b': 3, 'c': 4},
 {'a': 'x', 'b': 1, 'c': 1},
 {'a': 'y', 'b': 5, 'c': 2},
 {'a': 'a', 'b': 2, 'c': 9}]
1

Sử dụng danh sách hiểu, chúng tôi đã lặp lại trên tất cả các cặp giá trị khóa trong từ điển. Đối với mỗi cặp, chúng tôi kiểm tra xem giá trị đã cho có tồn tại trong danh sách các giá trị được liên kết với khóa này hay không. Nếu có, thì hãy đặt khóa đó vào một danh sách riêng được theo dõi bởi danh sách hiểu. Cuối cùng, chúng tôi có danh sách các khóa chứa giá trị 10.

Conclusion:

Vì vậy, đây là cách chúng ta có thể liên kết nhiều giá trị với một khóa trong từ điển. Tương tự, đối với các hoạt động khác như tìm kiếm và xóa các phần tử khỏi loại từ điển này, chúng ta cần đảm bảo rằng nó xử lý thực tế rằng các giá trị trong từ điển là liệt kê đối tượng và chứa nhiều giá trị.

Một từ điển Python có thể có nhiều giá trị?

Trong Python, nếu chúng ta muốn một từ điển trong đó một khóa có nhiều giá trị, thì chúng ta cần liên kết một đối tượng với mỗi khóa là giá trị. Đối tượng giá trị này nên có khả năng có các giá trị khác nhau bên trong nó. Chúng ta có thể sử dụng một tuple hoặc một danh sách làm giá trị trong từ điển để liên kết nhiều giá trị với một khóa.if we want a dictionary in which one key has multiple values, then we need to associate an object with each key as value. This value object should be capable of having various values inside it. We can either use a tuple or a list as a value in the dictionary to associate multiple values with a key.

Làm thế nào để bạn thêm nhiều mục vào một từ điển trong Python?

Trong Python, chúng ta có thể thêm nhiều cặp giá trị khóa vào từ điển hiện có.Điều này đạt được bằng cách sử dụng phương thức Update ().Phương pháp này có một đối số về loại dict hoặc bất kỳ điều gì có thể có độ dài hai - như ((key1, value1),) và cập nhật từ điển với các cặp giá trị khóa mới.using the update() method. This method takes an argument of type dict or any iterable that has the length of two - like ((key1, value1),) , and updates the dictionary with new key-value pairs.

Một khóa có thể có nhiều giá trị?

Mỗi khóa chỉ có thể có một giá trị.Nhưng cùng một giá trị có thể xảy ra nhiều hơn một lần bên trong một hàm băm, trong khi mỗi khóa chỉ có thể xảy ra một lần.. But the same value can occur more than once inside a Hash, while each key can occur only once.

Làm thế nào để bạn chia một giá trị từ điển trong Python?

Phương pháp 1: Phân chia các khóa và giá trị từ điển bằng các hàm sẵn có.Ở đây, chúng ta sẽ sử dụng hàm sẵn của python đó là hàm .KEY () trong hàm python và .values () trong python để lấy các khóa và giá trị vào các danh sách riêng biệt.use the inbuilt function of Python that is . keys() function in Python, and . values() function in Python to get the keys and values into separate lists.