辞書の値から減算する必要があります。
list1 = {'i': 1, 'k': 1, 'j': 1, 'o': 2, 'q': 1, 's': 1, 'x': 1, 'z': 1}
string = 'ikjoosgx'
for letter in string:
I NEED TO DECREASE list1 key of same name as letter VALUE BY 1. DIPSIT!
辞書の値から減算する必要があります。
list1 = {'i': 1, 'k': 1, 'j': 1, 'o': 2, 'q': 1, 's': 1, 'x': 1, 'z': 1}
string = 'ikjoosgx'
for letter in string:
I NEED TO DECREASE list1 key of same name as letter VALUE BY 1. DIPSIT!
for letter in my_string:
list1[letter] -= 1
補足として、string
これは標準モジュールの名前でもあるため、変数名として使用しないでください。
文字の 1 つが辞書にない場合、これは機能しません。try/except
その場合、ブロックをループに入れることができます。
for letter in my_string:
try:
list1[letter] -= 1
except KeyError:
pass # your error handling goes here
デフォルト値が必要な場合は、次のものに置き換えることができますpass
。
list1[letter] = default_value
または、 Ocaso のソリューションを使用することもできます。
あなたの質問が正しければ、あなたはこれが欲しいです:
list1 = {'i': 1, 'k': 1, 'j': 1, 'o': 2, 'q': 1, 's': 1, 'x': 1, 'z': 1}
string = 'ikjoosgx'
for letter in string:
if letter in list1:
list1[letter] -= 1
print list1
>>> {'q': 1, 's': 0, 'z': 1, 'i': 0, 'x': 0, 'k': 0, 'j': 0, 'o': 0}
今回は古き良きを使用した別のソリューションsetdefault
:
list1 = {'i': 1, 'k': 1, 'j': 1, 'o': 2, 'q': 1, 's': 1, 'x': 1, 'z': 1}
string1 = 'ikjoosgx'
for letter in string1:
list1[letter] = list1.setdefault(letter, 0) - 1
for letter in string:
list1[letter] = list1[letter] - 1
簡単です:
d[key] -= 1
キーを繰り返すだけです:
for letter in string:
d[letter] -= 1