
[code]

    list=[]
    dict={}
    key=sq{}.format(moji)
    list.append(su)
    dict[key] = list
    
[/code]

として

[code]

    {'あ': ['10', '20'], 'い': ['11', '21']}
    
[/code]

となるように辞書の中にリストを内包しました。  
ここでキーとなる`'い'`とリストの`['11', '21']`を削除したいのですが

[code]

    dict[key].pop()
    list.pop()
    
[/code]

とすると`'い'`は削除されて様な感じになるのですが  
同じキーの`'い'`を作成されると`: ['11', '31']`となり最後の内容だけ削除されてしまい

[code]

    list.Clear()
    
[/code]

をするとすべての内容が削除されてしまいます。

[code]

    'い': ['11', '21']
    
[/code]

だけを完全に削除する方法をご教授頂けないでしょうか。  
宜しくお願い致します。


CC BY-SA 4.0
2021-01-15T07:30:15.390
73312
2021-01-21T14:31:17.163
2021-01-21T14:31:17.163
19110
42610
question
python python3
辞書に内包されているリストの削除について


[list](https://docs.python.org/ja/3/library/stdtypes.html?highlight=list#list)
や
[dict](https://docs.python.org/ja/3/library/stdtypes.html?highlight=dict#dict)
は組み込み型に存在するので, 別の名前にしたほうがよいでしょう

「マッピング型 --- dict」の説明にもあるように  
キーを削除するなら, 次の方法で行います

[code]

    d = {'あ': ['10', '20'], 'い': ['11', '21']}
    k = 'い'
    del d[k]
    print(d)
    
[/code]

キーが存在するかどうか不明な場合は, 以下のようにチェックできます

[code]

    if 'い' in d:
        del d['い']
    
[/code]

* * *

### 追記

キーに対してそれぞれのリストを管理するのなら, 以下のような感じで

[code]

    lst = d['あ']
    lst.append('300')
    
    # あるいは
    for k in d:
        lst = d[k]
        lst.pop()
    # またあるいは
    for k,lst in d.items():
        print(f'キー: {k}, リスト: {lst}')
        lst.append('A')
    
[/code]


CC BY-SA 4.0
2021-01-15T08:06:13.160
73313
2021-01-21T11:15:34.933
2021-01-21T11:15:34.933
43025
43025
73312
answer