1

次のような状況があります。

data = {'key1' : 'value1',
       'key2': [ 
                   {'subkey1': 'subvalue1',
                    'subkey2': 'subvalue2'},

                   {other dictionaries}
                   ...
                ]
        }

私は正確な辞書を持っています:

{'subkey1': 'subvalue1', 'subkey2': 'subvalue2'}

変数に格納されます。データ辞書から削除したいと思います。どうすればこれを行うことができますか?

4

4 に答える 4

0

あなたの例にあるように、ネストのレベルが2つしかないと仮定します。

for key in data.keys():
  if type(data[key])==type(list()):
    if item_to_del in data[key]:
        data[key].remove(item_to_del)

より深いレベルの入れ子については、反復して封じ込めを確認してから削除するというこの考え方を拡張します。

于 2013-09-27T16:45:41.380 に答える
0

それがリストの最初の要素であることがわかっている場合は、delコマンドを使用して、そのリストの0番目の要素を削除できます。

リスト内のどの要素であるかがわからない場合は、削除する要素を探してリストを反復処理するか、リスト内包表記を使用して要素を削除できます。

反復の擬似コードは次のようになります。

for each element in the list I want to iterate:
  if this element is the one I want to delete:
    delete(element)

リスト内包表記は次のようになります。

dict['key2'] = [i for i in dict['key2'] if i != THE_ELEMENT_YOU_WANT_TO_DELETE]
于 2013-09-27T16:34:11.373 に答える
0

一致するキー (こちら) がわからない場合は'key2'、次を使用できます。

exact_dict = {'subkey1': 'subvalue1',
              'subkey2': 'subvalue2'}

for val in data.itervalues():
    try:
        if exact_dict in val:
            val.remove(exact_dict)
    except TypeError:
        pass
于 2013-09-27T16:36:08.673 に答える