Hướng dẫn how do you count a nested dictionary in python? - làm thế nào để bạn đếm một từ điển lồng nhau trong python?

Đối với câu hỏi cụ thể của bạn, bạn chỉ có thể sử dụng điều này:

>>> d={'fruit': 
         {'orange': 'orange', 'apple': 'red', 'banana': 'yellow'}, 
       'vegetables': 
         {'lettuce': 'green', 'beet': 'red', 'pumpkin': 'orange'}}
>>> len[d]
2            # that is 1 reference for 'fruit' and 1 for 'vegetables'
>>> len[d['fruit']]
3            # 3 fruits listed...
>>> len[d['vegetables']]
3            # you thought of three of those...
>>> len[d['fruit']]+len[d['vegetables']]
6

Mặc dù bạn có thể sử dụng các công cụ khác nhau mà Python phải đếm các yếu tố trong từ điển tầm thường này, điều thú vị và hiệu quả hơn là nghĩ về cấu trúc của dữ liệu ở nơi đầu tiên.

Các cấu trúc dữ liệu cơ bản của Python là danh sách, bộ, bộ dữ liệu và từ điển. Bất kỳ cấu trúc dữ liệu nào trong số này có thể 'giữ', bằng cách tham chiếu, bất kỳ phiên bản lồng nhau nào của chính nó hoặc các cấu trúc dữ liệu khác.

Danh sách này là một danh sách lồng nhau:

>>> l = [1, [2, 3, [4]], [5, 6]]
>>> len[l]
3
>>> l[0]
1
>>> l[1]
[2, 3, [4]]
>>> l[2]
[5, 6]

Phần tử đầu tiên là số nguyên 1. Phần tử 1 và 2 là danh sách. Điều tương tự cũng có thể đúng với bất kỳ cấu trúc dữ liệu Python cơ bản nào khác. Đây là các cấu trúc dữ liệu đệ quy. Bạn có thể in chúng bằng pprint

Nếu bạn tổ chức từ điển của mình tốt hơn một chút, việc trích xuất thông tin từ nó với các công cụ đơn giản nhất của Python sẽ dễ dàng hơn:

>>> color='color'
>>> family='family'
>>> sensation='sensation'
>>> good_things={   
            'fruit': 
            {
                'orange': 
                    {
                    color: 'orange', 
                    family: 'citrus',
                    sensation: 'juicy'
                    }, 
                'apple': 
                    {
                    color: ['red','green','yellow'], 
                    family:'Rosaceae',
                    'sensation': 'woody'
                    },
                'banana': 
                    {
                    color: ['yellow', 'green'],
                    family: 'musa',
                    sensation: 'sweet'
                    }
            },
            'vegatables': 
            {
                'beets': 
                    {
                    color: ['red', 'yellow'],
                    family: 'Chenopodiaceae',
                    sensation: 'sweet'
                    },
                'broccoli':
                    {
                    color: 'green',
                    family: 'kale',
                    sensation: 'The butter you put on it',
                    }
            }
        }    

Bây giờ các truy vấn chống lại dữ liệu đó có ý nghĩa hơn:

>>> len[good_things]
2                        # 2 groups: fruits and vegetables
>>> len[good_things['fruit']]
3                        # three fruits cataloged
>>> len[good_things['vegetables']]
2                        # I can only think of two vegetables...
>>> print good_things['fruit']['apple']
{'color': ['red', 'green', 'yellow'], 'sensation': 'woody', 'family': 'Rosaceae'}
>>> len[good_things['fruit']['apple']['color']]
3                        # apples have 3 colors

Đôi khi bạn cần phải có số lượng khóa và giá trị trong từ điển. Bạn rõ ràng có thể làm điều này bằng cách sử dụng len[dict], nhưng nó sẽ chỉ trả về số lượng chính cho cấp độ từ điển đầu tiên.

Để đếm các khóa và giá trị trong từ điển lồng nhau, bạn có thể sử dụng chức năng này. Nó cũng hoạt động chính xác với các giá trị danh sách và tuple.

def count_k_v[d]:
    keys = 0
    values = 0
    if type[d] == dict:
        for item in d.keys[]:
            if isinstance[d[item], [list, tuple, dict]]:
                keys += 1
                k, v = count_k_v[d[item]]
                values += v
                keys += k
            else:
                keys += 1
                values += 1

    elif type[d] == list or type[d] == tuple:
        for item in d:
            if isinstance[item, [list, tuple, dict]]:
                k, v = count_k_v[item]
                values += v
                keys += k
            else:
                values += 1

    return keys, values

Thí dụ

Hãy lấy từ điển mẫu này và chỉ định nó là đối số cho một hàm:

d = {
      'quack':
              {
                'zozo': '10',
                'pysha': 'queeee',
              },
      'bobique': ['iaiaia', '12312', 'auasuhrh2r'],
      'put-in': 123,
      'fofof':
              {
                  'qwijhg': ['123', 13248, 'asd8ghg'],
                  'wijfr':
                            {
                              'quwhf': '128u4',
                              'hg': 2835,
                            },
              },
      'ghuh': [982, 'sygf'],
}
k, v = count_k_v[d]
print[f"Found {k} keys and {v} values"]

>>> Found 11 keys and 13 values

Bạn có thể tổng hợp một python từ điển không?

Nó khá dễ dàng để có được tổng các giá trị của từ điển Python.Trước tiên, bạn có thể nhận các giá trị trong một danh sách bằng dict.values []. Sau đó, bạn có thể gọi phương thức tổng để nhận tổng của các giá trị này.You can first get the values in a list using the dict. values[]. Then you can call the sum method to get the sum of these values.

Bạn có thể làm tổ bao nhiêu lần một con trăn từ điển?

Giới hạn duy nhất là bộ nhớ.Cho bộ nhớ vô hạn, bạn có thể làm tổ các đối tượng Python vô hạn.Vì lợi ích của sự tỉnh táo của tôi, tôi đã giết nó ở 30 triệu đối tượng.. Given infinite memory you can nest Python objects infinitely. For the sake of my sanity I killed it at 30 million objects though.

Từ điển lồng nhau có trong Python không?

Trong Python, một từ điển lồng nhau có thể được tạo ra bằng cách đặt các từ điển được phân tách bằng dấu phẩy được đặt trong niềng răng.a Nested dictionary can be created by placing the comma-separated dictionaries enclosed within braces.

Bạn có thể có 3 mục trong một python từ điển không?

Bạn có thể thêm bao nhiêu mặt hàng tùy thích..

Bài Viết Liên Quan

Chủ Đề