2

辞書からいくつかの項目を削除するための最も効率的な方法が必要です。今、私は以下に示すようにstmtに使用しています。同じことを数行で実行する必要があると考えています。

for eachitem in dicta:
                del eachitem['NAME']
                del eachitem['STATE']
                del eachitem['COUNTRY']
                del eachitem['REGION']
                del eachitem['LNAME']

dicta = [{'name','Bob','STATE':'VA','COUNTRY':'US','REGION':'MIDWEST','LNAME':'Brian',Salary:6000}]

辞書にある給与項目を削除したら、それだけが欲しいのですが。任意の入力をいただければ幸いです。

4

3 に答える 3

6

サンプルデータがあなたが扱っているものである場合、要素を削除する代わりに、その唯一のキーでdictを再作成してください

dicta = [{'Salary':e['Salary']} for e in dicta]

または私にとっては、辞書のリストの代わりにリストを作成する方が理にかなっています

dicta = [e['Salary'] for e in dicta]

ただし、何を達成しようと計画しているかによって異なります

于 2013-02-21T18:12:21.533 に答える
5

私はあなたが使用できると思います:

for eachitem in dicta:
    for k in ['NAME','STATE','COUNTRY','REGION','LNAME']:
        del eachitem[k]

または、キーが 1 つだけ必要な場合:

for eachitem in dicta:
    salary = eachitem['SALARY']
    eachitem.clear()
    eachitem['SALARY'] = salary

これは、私があなたが望むと思うすべてを適切に行います-それ以外の場合は、次の方法で場違いに行うことができます:

eachitem = {'SALARY':eachitem['SALARY']}
于 2013-02-21T18:06:13.693 に答える
1

編集: 私は口述理解が最も速いと言っていました: 私は間違っていました. %timeit test3の代わりにうっかり走ってしまいました%timeit test3()。以下の結果を参照してください。

def test1():
    dicta = [{'NAME':'Bob','STATE':'VA','COUNTRY':'US','REGION':'MIDWEST','LNAME':'Brian','Salary':6000}]
    remove = ['NAME','STATE','COUNTRY','REGION','LNAME']
    for d in dicta:
        for r in remove:
            d.pop(r)

def test2():
    dicta = [{'NAME':'Bob','STATE':'VA','COUNTRY':'US','REGION':'MIDWEST','LNAME':'Brian','Salary':6000}]
    remove = ['NAME','STATE','COUNTRY','REGION','LNAME']
    for d in dicta:
        for r in remove:
            del d[r]

def test3():
    dicta = [{'NAME':'Bob','STATE':'VA','COUNTRY':'US','REGION':'MIDWEST','LNAME':'Brian','Salary':6000}]
    remove = ['NAME','STATE','COUNTRY','REGION','LNAME']    
    dicta = [{k:v for k,v in d.iteritems() if k not in remove } for d in dicta]

# this is really what OP was looking for, the other 3 tests are more generalized.    
def test4():    
    dicta = [{'NAME':'Bob','STATE':'VA','COUNTRY':'US','REGION':'MIDWEST','LNAME':'Brian','Salary':6000}]
    remove = ['NAME','STATE','COUNTRY','REGION','LNAME']    
    dicta = [e['Salary'] for e in dicta]

%timeit test1()
# 100000 loops, best of 3: 2.32 us per loop    
%timeit test2()
# 1000000 loops, best of 3: 1.68 us per loop    
%timeit test3()
# 100000 loops, best of 3: 3.23 us per loop
%timeit test4()
# 1000000 loops, best of 3: 1.46 us per loop
于 2013-02-21T18:25:20.587 に答える