Hướng dẫn python select keys from list of dictionaries - python chọn khóa từ danh sách từ điển

Đối với một trường hợp rất đơn giản như thế này, một sự hiểu biết, như trong câu trả lời của Ismail Badawi chắc chắn là cách để đi.

Nhưng khi mọi thứ trở nên phức tạp hơn, và bạn cần bắt đầu viết các hình thức đa cụm hoặc lồng nhau với các biểu thức phức tạp trong đó, bạn đáng để xem xét các lựa chọn thay thế khác. Có một vài cách tiêu chuẩn khác nhau (gần như) để chỉ định các tìm kiếm theo kiểu XPath trên các cấu trúc chính tả và danh sách lồng nhau, như JsonPath, DPATH và KVC. Và có những thư viện tốt đẹp trên pypi cho họ.

Dưới đây là một ví dụ với thư viện có tên dpath, cho thấy cách nó có thể đơn giản hóa thứ gì đó phức tạp hơn một chút:

>>> dd = {
...     'fruits': [{'value': 'apple', 'blah': 2}, {'value': 'banana', 'blah': 3}],
...     'vehicles': [{'value': 'cars', 'blah':4}]}

>>> {key: [{'value': d['value']} for d in value] for key, value in dd.items()}
{'fruits': [{'value': 'apple'}, {'value': 'banana'}],
 'vehicles': [{'value': 'cars'}]}

>>> dpath.util.search(dd, '*/*/value')
{'fruits': [{'value': 'apple'}, {'value': 'banana'}],
 'vehicles': [{'value': 'cars'}]}

Hoặc, sử dụng jsonpath-ng:

>>> [d['value'] for key, value in dd.items() for d in value]
['apple', 'banana', 'cars']
>>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
['apple', 'banana', 'cars']

Cái này có thể không đơn giản như vậy ngay từ cái nhìn đầu tiên, bởi vì find trả về các đối tượng khớp, bao gồm tất cả các loại bên cạnh chỉ có giá trị phù hợp, chẳng hạn như đường dẫn trực tiếp đến mỗi mục. Nhưng đối với các biểu thức phức tạp hơn, việc có thể chỉ định một đường dẫn như '*.[*].value' thay vì mệnh đề hiểu cho mỗi * có thể tạo ra sự khác biệt lớn. Thêm vào đó, JsonPath là một đặc điểm kỹ thuật không liên tục ngôn ngữ và thậm chí còn có những người thử nghiệm trực tuyến có thể rất tiện dụng để gỡ lỗi.

Làm cách nào để đọc một danh sách các từ điển trong Python?

Có thể có hai cách để làm điều này:.

Đọc từ tệp văn bản. Chúng ta có thể đọc dữ liệu từ một tệp văn bản dưới dạng chuỗi và chuyển đổi dữ liệu đó thành một từ điển trong Python. ....

  • Đọc bằng mô -đun Pickle. Mô -đun Pickle trong Python chủ yếu được sử dụng trong các lĩnh vực như Khoa học dữ liệu trong đó sự tồn tại của dữ liệu là rất quan trọng. ....
  • Đọc từ tệp văn bản:.
  • Làm cách nào để đọc một danh sách các từ điển trong Python?

    Có thể có hai cách để làm điều này:.

    Đọc từ tệp văn bản. Chúng ta có thể đọc dữ liệu từ một tệp văn bản dưới dạng chuỗi và chuyển đổi dữ liệu đó thành một từ điển trong Python. ....

    Đọc bằng mô -đun Pickle. Mô -đun Pickle trong Python chủ yếu được sử dụng trong các lĩnh vực như Khoa học dữ liệu trong đó sự tồn tại của dữ liệu là rất quan trọng. ....

    Đọc từ tệp văn bản:.
    Using list comprehension is quite straight forward method to perform this particular task. In this, we just iterate over the list of dictionary for desired value.

    Xem thảo luận

    dpath2dpath3

    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    0
    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    1
    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    6dpath7____28

    jsonpath-ng6jsonpath-ng7jsonpath-ng8 jsonpath-ng9 find0find1

    find2= find4

    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    0___

    jsonpath-ng6jsonpath-ng7'*.[*].value'3 jsonpath-ng9 find0'*.[*].value'6

    Đầu ra:

    Danh sách ban đầu là: [{'là': 2, 'gfg': 1, 'tốt': 3}, {'gfg': 2}, {'tốt nhất': 3, 'gfg': 4}] tương ứng với khóa: [1, 2, 4]
    The values corresponding to key : [1, 2, 4]

    Phương pháp số 2: Sử dụng '*.[*].value'7 + '*.[*].value'8 Vấn đề này cũng có thể được giải quyết bằng cách sử dụng một kỹ thuật khác bằng cách sử dụng '*.[*].value'7 và '*.[*].value'8. Trong đó, bản đồ được sử dụng để liên kết giá trị với tất cả các khóa từ điển và ItemGetter có khóa mong muốn.
    This problem can also be solved using another technique using '*.[*].value'7 and '*.[*].value'8. In this, map is used to link the value to all the dictionary keys and itemgetter gets the desired key.

    *1 *2*3 *4

    test_list = [{

    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    0
    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    1
    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    2
    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    3__

    dpath2dpath3

    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    0
    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    1
    >>> [d['value'] for key, value in dd.items() for d in value]
    ['apple', 'banana', 'cars']
    >>> [m.value for m in jsonpath_ng.parse('*.[*].value').find(dd)]
    ['apple', 'banana', 'cars']
    
    6dpath7____28

    jsonpath-ng6jsonpath-ng7jsonpath-ng8 jsonpath-ng9 find0find1

    Các

    jsonpath-ng6jsonpath-ng7'*.[*].value'3 jsonpath-ng9 find0'*.[*].value'6

    Đầu ra:

    Danh sách ban đầu là: [{'là': 2, 'gfg': 1, 'tốt': 3}, {'gfg': 2}, {'tốt nhất': 3, 'gfg': 4}] tương ứng với khóa: [1, 2, 4]
    The values corresponding to key : [1, 2, 4]


    Làm thế nào để bạn có được một chìa khóa từ một danh sách từ điển?

    Sử dụng hàm () () và áp dụng nó vào từ điển đầu vào để lấy danh sách tất cả các khóa của từ điển. In danh sách các khóa của từ điển bằng cách đi qua từng khóa trong danh sách các khóa trên bằng cách sử dụng danh sách hiểu và cho vòng lặp.. Print the list of keys of a dictionary by traversing through each key in the above keys list using the list comprehension and for loop.

    Làm thế nào để bạn tìm nạp tất cả các giá trị của một từ điển như một danh sách python?

    Dưới đây là 3 cách tiếp cận để trích xuất các giá trị từ điển như một danh sách trong Python:..
    .
    .
    .

    Làm cách nào để trích xuất một khóa từ một danh sách trong Python?

    Dưới đây là 4 cách để trích xuất các khóa từ điển như một danh sách trong Python:..
    (1) Sử dụng hàm danh sách (): my_list = list (my_dict).
    .
    .
    .

    Làm cách nào để đọc một danh sách các từ điển trong Python?

    Có thể có hai cách để làm điều này:..
    Đọc từ tệp văn bản.Chúng ta có thể đọc dữ liệu từ một tệp văn bản dưới dạng chuỗi và chuyển đổi dữ liệu đó thành một từ điển trong Python.....
    Đọc bằng mô -đun Pickle.Mô -đun Pickle trong Python chủ yếu được sử dụng trong các lĩnh vực như Khoa học dữ liệu trong đó sự tồn tại của dữ liệu là rất quan trọng.....
    Đọc từ tệp văn bản:.