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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從字典中過(guò)濾嵌套數(shù)據(jù)

從字典中過(guò)濾嵌套數(shù)據(jù)

青春有我 2023-09-26 16:25:20
我有這本詞典:dict = {        'user_1': {'role': 1, 'perm': 5},        'user_2': {'role': 1, 'perm': 5},        'user_3': {'role': 1, 'perm': 4},        'user_4': {'role': 1, 'perm': 7},        'user_5': {'role': 3, 'perm': 5}    }如何過(guò)濾以僅選取密鑰:重復(fù)的角色和權(quán)限:repeated_role_perm = {        'user_1': {'role': 1, 'perm': 5},        'user_2': {'role': 1, 'perm': 5},    }角色重復(fù)但沒有重復(fù)權(quán)限:only_role_repeated = {      'user_3': {'role': 1, 'perm': 4},      'user_4': {'role': 1, 'perm': 7},}剩下的:leftovers = { 'user_5': {'role': 3, 'perm': 5}}我可以使用以下代碼來(lái)縮短數(shù)據(jù):shorted_dict = OrderedDict(sorted(list.items(), key=lambda x: (operator.getitem(x[1], 'role'), operator.getitem(x[1], 'perm'))))但這并不完全是我想要的。
查看完整描述

2 回答

?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

也許嘗試一個(gè)功能?


 my_dict = {

    'user_1': {'role': 1, 'perm': 5},

    'user_2': {'role': 1, 'perm': 5},

    'user_3': {'role': 1, 'perm': 4},

    'user_4': {'role': 1, 'perm': 7},

    'user_5': {'role': 3, 'perm': 5}

}


 def filter_dict(role,perm,dic):

      filtered = {}

      users = [k for k in dic.keys() if dic[k]['role'] == int(role) and 

      dic[k]['perm'] == int(perm)]

      for user in users:

           filtered[user] = dic[user]

 return filtered

該函數(shù)返回,


 filter_dict(1,5,my_dict)

 {'user_1': {'role': 1, 'perm': 5}, 'user_2': {'role': 1, 'perm': 5}}


查看完整回答
反對(duì) 回復(fù) 2023-09-26
?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

當(dāng)你建立索引時(shí),你有點(diǎn)想把整個(gè)事情翻個(gè)底朝天。然后你可以使用索引來(lái)構(gòu)造你想要的字典:


import json


data = {

        'user_1': {'role': 1, 'perm': 5},

        'user_2': {'role': 1, 'perm': 5},

        'user_3': {'role': 1, 'perm': 4},

        'user_4': {'role': 1, 'perm': 7},

        'user_5': {'role': 3, 'perm': 5}

    }


# Build an index

index = {}

for (user, v) in data.items():

    role = v['role']

    perm = v['perm']

    if role not in index:

        index[role] = {}

    if perm not in index[role]:

        index[role][perm] = []

    index[role][perm].append({user:v})


# Dump the index

# print(json.dumps(index, indent=4))


# Define our target dictionaries

repeated_role_perm = {}

only_role_repeated = {}

leftovers = {}


# Walk our index, putting each leaf into the right target dictionary

for role in index:

    perms = index[role]

    target = leftovers

    for perm in perms:

        users = index[role][perm]

        if len(perms) > 1:

            if len(users) > 1:

                target = repeated_role_perm

            else:

                target = only_role_repeated

        for userdict in users:

            target.update(userdict)


# Print the results

print('repeated_role_perm = ' + json.dumps(repeated_role_perm, indent=4))

print()

print('only_role_repeated = ' + json.dumps(only_role_repeated, indent=4))

print()

print('leftovers = ' + json.dumps(leftovers, indent=4))

結(jié)果:


repeated_role_perm = {

    "user_1": {

        "role": 1,

        "perm": 5

    },

    "user_2": {

        "role": 1,

        "perm": 5

    }

}


only_role_repeated = {

    "user_3": {

        "role": 1,

        "perm": 4

    },

    "user_4": {

        "role": 1,

        "perm": 7

    }

}


leftovers = {

    "user_5": {

        "role": 3,

        "perm": 5

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-09-26
  • 2 回答
  • 0 關(guān)注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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