-2

辞書の値から減算する必要があります。

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!
4

5 に答える 5

1
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 のソリューションを使用することもできます。

于 2013-01-29T08:56:04.363 に答える
1

あなたの質問が正しければ、あなたはこれが欲しいです:

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}
于 2013-01-29T09:03:25.150 に答える
1

今回は古き良きを使用した別のソリューション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
于 2013-01-29T09:05:09.070 に答える
0
for letter in string:
    list1[letter] = list1[letter] - 1
于 2013-01-29T08:58:57.997 に答える
0

簡単です:

d[key] -= 1

キーを繰り返すだけです:

for letter in string:
    d[letter] -= 1
于 2013-01-29T08:55:47.207 に答える