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

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

如何從有條件的字典列表中提取字典

如何從有條件的字典列表中提取字典

PHP
叮當(dāng)貓咪 2023-11-09 21:16:03
如何從帶有條件的json中提取我有一個(gè)字典列表。我需要在某些條件下提取一些字典如果對(duì)于跨字段我需要“AND”條件對(duì)于相同的字段數(shù)組,我需要 OR 條件我需要搜索subject哪個(gè)是Physics或Accounting這是字段數(shù)組(OR)語(yǔ)句和我需要搜索type是Permanent或GUEST條件這是字段數(shù)組(OR)語(yǔ)句和我需要搜索Locationis NY(&) 條件test = [{'id':1,'name': 'A','subject': ['Maths','Accounting'],'type':'Contract', 'Location':'NY'},      { 'id':2,'name': 'AB','subject': ['Physics','Engineering'],'type':'Permanent','Location':'NY'},    {'id':3,'name': 'ABC','subject': ['Maths','Engineering'],'type':'Permanent','Location':'NY'},{'id':4,'name':'ABCD','subject': ['Physics','Engineering'],'type':['Contract','Guest'],'Location':'NY'}]預(yù)期輸出是 id[{ 'id':2,'name': 'AB','subject': ['Physics','Engineering'],'type':'Permanent','Location':'NY'},{'id':4,'name':'ABCD','subject': ['Physics','Engineering'],'type':['Contract','Guest'],'Location':'NY'}]
查看完整描述

2 回答

?
神不在的星期二

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

這里的問(wèn)題主要是你的數(shù)據(jù)不統(tǒng)一,有時(shí)是字符串,有時(shí)是列表。咱們?cè)囋嚢桑?/p>


# turns the values into set for easy comparison

def get_set(d,field):

    return {d[field]} if isinstance(d[field], str) else set(d[field])

    

# we use this to filter

def validate(d):

    # the three lines below corresponds to the three conditions listed

    return get_set(d,'subject').intersection({'Physics','Accounting'}) and \

           get_set(d,'type').intersection({'Permanent', 'Guest'}) and \

           get_set(d,'Location')=={'NY'}


result = [d for d in test if validate(d)]

輸出:


[{'id': 2,

  'name': 'AB',

  'subject': ['Physics', 'Engineering'],

  'type': 'Permanent',

  'Location': 'NY'},

 {'id': 4,

  'name': 'ABCD',

  'subject': ['Physics', 'Engineering'],

  'type': ['Contract', 'Guest'],

  'Location': 'NY'}]


查看完整回答
反對(duì) 回復(fù) 2023-11-09
?
翻閱古今

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

以下帶有嵌套 if 子句的簡(jiǎn)單方法解決了該問(wèn)題。條件and是通過(guò)嵌套完成的if,or條件只是通過(guò) 完成or。


該in運(yùn)算符適用于字符串值和列表值,因此它可以互換使用并產(chǎn)生預(yù)期的結(jié)果。但這種方法期望沒(méi)有像XYZ Accounting.


result = []


for elem in test:

    

    # Check Location

    if elem['Location'] == 'NY':

    

        # Check subject

        subject = elem['subject']

        if ('Accounting' in subject) or ('Physics' in subject):

        

            # Check type

            elem_type = elem['type']

            if ('Permanent' in elem_type) or ('Guest' in elem_type):

                # Add element to result, because all conditions are true

                result.append(elem)


查看完整回答
反對(duì) 回復(fù) 2023-11-09
  • 2 回答
  • 0 關(guān)注
  • 188 瀏覽

添加回答

舉報(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)