2017-11-01 21 views
-1

入れ子の辞書から辞書を削除したいと思います。この辞書から 入れ子の辞書から辞書を削除する

dict = { 
    'user': [ 
     { 
      'firstName': 'john', 
      'lastName': 'doe', 
      'movieList': [] 
     }, 
     { 
      'firstName': 'sarah', 
      'lastName': 'doe', 
      'movieList': [] 
     }, 
     { 
      'firstName': 'john', 
      'lastName': 'smith', 
      'movieList': [] 
     }, 
     { 
      'firstName': 'sarah', 
      'lastName': 'smith', 
      'movieList': [] 
     } 
    ], 'movie': [] 
} 

私は削除する:

私は削除使用してみましたが、私はこのエラーを取得 インデックス0 あり
{ 
    'firstName': 'john', 
    'lastName': 'doe', 
    'movieList': [] 
} 

dict['user'][userId] TypeError: list indices must be integers or slices, not str 
+0

これまでに何を試しましたか? – FELASNIPER

+0

@FELASNIPER del dict ['user'] [userId]、私は何ができるかわからない – Gallo

+1

'dict ['user']'は_list_を_dictionary_ではなく、エラーを返そうとしているものを返します –

答えて

0

まず、私はdict "dict"と名をつけたり、 "d"などを使ってはいけません。

dict['user'].pop(0) 
+0

助けてくれてありがとう – Gallo

+0

"userId"とは何ですか?私はあなたが提供したコードをコピーし、それは私のためにうまくいった。 – SuperStew

+0

私はuserIdのデータ型を変更していません – Gallo

0

私の評判は低すぎます。変数userIdが整数ではなく文字列である可能性があります。このような場合は、intにはuserIdを変換してみてください:あなたが削除されている辞書を使用しない場合

userId = int(userId) 
0

delpopremoveDifference between del, remove and pop on lists

に関する詳しい情報は、この質問を参照してください、Iこの[0]がの値として格納さlistの最初のインデックスを削除して

d = {'user': [{'firstName': 'john', 'lastName': 'doe', 'movieList': []}, 
       {'firstName': 'sarah', 'lastName': 'doe', 'movieList': []}, 
       {'firstName': 'john', 'lastName': 'smith', 'movieList': []}, 
       {'firstName': 'sarah', 'lastName': 'smith', 'movieList': []}], 'movie': []} 

del d['user'][0] 

:以下のように、delを使用しますキー

あなたが繰り返しあなたのリストの最初のインデックスを削除すると、あなたのリストが長い場合は、いずれかの端部からの高速ポップ持っている、代わりに)(両端キューを使用することを検討してください: https://docs.python.org/3/library/collections.html#collections.deque

またし、ありません別名辞書変数のdict

0

を呼び出すことはありませんあなたはこれを試すことができ、その種類としてあなたの変数と同じ名前を呼ぶ:

dict1 = {'user': [{'firstName': 'john', 'lastName': 'doe', 'movieList': []}, {'firstName': 'sarah', 'lastName': 'doe', 'movieList': []}, {'firstName': 'john', 'lastName': 'smith', 'movieList': []}, {'firstName': 'sarah', 'lastName': 'smith', 'movieList': []}], 'movie': []} 
new_dict = {a:b[1:] if b else b for a, b in dict1.items()} 

出力:

{'movie': [], 'user': [{'lastName': 'doe', 'movieList': [], 'firstName': 'sarah'}, {'lastName': 'smith', 'movieList': [], 'firstName': 'john'}, {'lastName': 'smith', 'movieList': [], 'firstName': 'sarah'}]} 
関連する問題