第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

編寫一個算法來計算字典中子字典的數(shù)量

編寫一個算法來計算字典中子字典的數(shù)量

拉丁的傳說 2021-12-21 16:29:38
我對 Python 還很陌生,并且正在為嵌套字典而苦苦掙扎。考慮一下這本詞典:d = {  'a1': {    'a2': [      [1, 2, 3],      {        'a3': ({          'a4': 'cv'        }, (1, 2, 3, {          'a5': 'c'        }))      }    ]  },  'b1': {    'b2': [1, 2, 3]  },  3: '3',  (1, 2, 3): 'immutable'}如何從字典中計算子字典d。我的算法是不正確的:def count_dict(d):    # print(d.items())    return sum(1 + count_dict(v) if isinstance(v, dict) else 1 for _, v in d.items())$> print(count_dict(d))$> 6并且期望結(jié)果是 9。
查看完整描述

1 回答

?
阿晨1998

TA貢獻2037條經(jīng)驗 獲得超6個贊

您可以通過遞歸找到所有字典。在此之前,我必須澄清以下幾點:

  1. 在字典中查找而d不是在字典中查找b,對嗎?

  2. 如果要查找所有字典,dict示例中有 6 個。如果你想找到所有key-value pairs,它有 9 key-value pairs。

所以我有正確的兩個版本,一個用于dict,一個用于key-value(僅一行差異):

def count_dict(d):

    if isinstance(d, dict):

        # count 1 if it is a dict

        count = 1

        # iterate values for dict

        iterable = d.values()

    else:

        count = 0

        iterable = d


    for v in iterable:

        if isinstance(v, dict) or isinstance(v, list) or isinstance(v, tuple) or isinstance(v, set):

            # count recursively

            count += count_dict(v)

    return count



def count_dict_pairs(d):

    if isinstance(d, dict):

        # count key-value pairs if it is a dict

        count = len(d)

        iterable = d.values()

    else:

        count = 0

        iterable = d


    for v in iterable:

        if isinstance(v, dict) or isinstance(v, list) or isinstance(v, tuple) or isinstance(v, set):

            count += count_dict(v)

    return count


def test():

    d = {

        'a1': {

            'a2': [

                [1, 2, 3],

                {

                    'a3': ({

                               'a4': 'cv'

                           }, (1, 2, 3, {

                        'a5': 'c'

                    }))

                }

            ]

        },

        'b1': {

            'b2': [1, 2, 3]

        },

        3: '3',

        (1, 2, 3): 'immutable'

    }


    print(count_dict(d))   # output 6

    print(count_dict_pairs(d))   # output 9

希望對你有幫助。


查看完整回答
反對 回復 2021-12-21
  • 1 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號