python3の辞書(dict)の中のlist型の値の更新について。
python3のlist型を含めた辞書の更新で困っています。
辞書内のlistの内容を 0 → 1 に更新する方法はありますか?
一度[10,0]を抜いて[10,1]にして更新もないと思うので。。。
def eigo_red_set(self):
??→ self.eigo_dic[0] = 1
0
python3のlist型を含めた辞書の更新で困っています。
辞書内のlistの内容を 0 → 1 に更新する方法はありますか?
一度[10,0]を抜いて[10,1]にして更新もないと思うので。。。
def eigo_red_set(self):
??→ self.eigo_dic[0] = 1
質問の意図を推測するとこういうこと?
class Spam:
def __init__(self):
self.eigo_dic = {
0: [10, 0],
}
def eigo_red_set(self, value):
self.eigo_dic[0][1] = value
spam = Spam()
print(spam.eigo_dic[0])
# >> [10, 0]
spam.eigo_red_set(value=1)
print(spam.eigo_dic[0])
# >> [10, 1]
@okihara6
Questioner
キーは必要ですね。
元のコードの eigo_dic
にどういう値が入っているかわかりませんが、私が書いた例だと、下のような dict
を想定しています。
eigo_dic = {
0: [10, 0, 'a'],
1: [10, 0, 'b'],
'X': [10, 0, 'c'],
'Y': [10, 0, 'd']
}
つまりキーに int
を使用している特殊な例なので eigo_dic[0]
が配列の添字のように見えますが、 0
は dict
のキーです。上の例ではキーの値が int
と str
の混在なのでこのようにアクセスできます。
print(eigo_dic[0])
# >> [10, 0, 'a']
print(eigo_dic[0][2])
# >> a
print(eigo_dic['X'])
# >> [10, 0, 'c']
print(eigo_dic['X'][2])
# >> c
eigo_dic[0][2]
の [0]
が dict
のキーであり、 [2]
が中の配列の添字です。ですので、更新する際は次ようになります。
eigo_dic[0][2] = 'A'
print(eigo_dic[0])
# >> [10, 0, 'A']
print(eigo_dic[0][2])
# >> A
eigo_dic['X'][2] = 'C'
print(eigo_dic['X'])
# >> [10, 0, 'C']
print(eigo_dic['X'][2])
# >> C
このように更新のならまあキーは不要という表現になるのかもしれませんが
eigo_dic.update({
0: [10, 0, 'A'],
'X': [10, 0, 'B'],
})
@okihara6
Questioner