2016-04-01 6 views
0

** EDIT:辞書に(リスト)で値を更新し

D = {'first':['a','b','b'], 'second':['alpha','beta','kappa']} 

明確化の私の不足のため申し訳ありませんが、次のように私は辞書Dを持っています。私の新しい辞書は次のようになります。

D = {'first': True, 'second':['alpha','beta','kappa']} 

私はDの各ペアリングを検索したいとキーが(D [「最初」]用など)、リスト内の値を繰り返した場合、私はその値を置き換えたいです真と。

ループとステートメントを使用してこれを行うにはどうすればよいですか? (その私の割り当てから問題の一部と、これらは制限されている)

+2

なぜループやステートメントを使いたいのですか?また、期待される出力は正確には何ですか? –

+0

@ReutSharabani:D = {'first':['a'、 'b'、True]、 'second':['alpha'、 'beta'、 'kappa']} ' –

+2

['a'、True、True]、 'second':['alpha'、 'beta'、 'kappa'] 'のように読みます。 –

答えて

0

こんにちは男私が正しくあなたを理解すれば、それは次のようになります。

dic = {'mykey':'123345678', 'otherkey':44} 
'mykey' in dic 
>>>True 

たり、例えば発電機で:

dic['mykey'] = list(map(lambda x: bool(x), dic['otherkey'])) 
print dic 
>>>{'mykey': [True, True, True], 'otherkey': [9, 4, 7]} 

やフィルタ用:

dic['mykey'] = list(map(lambda x: bool(x) if (x==9 or x==4 or x==3) else False, dic['otherkey'])) 
print dic 
{'mykey': [True, True, False], 'otherkey': [9, 4, 7]} 

しかし、私はあなたがループを必要としないもののために理解していませんか?出力で何が得られますか?

0

私だけfor文でそれを行うことができませんでしたが、ここであなたはそれがwhileと組み合わせています

for key in dict.keys(): 
    indexCounter = 0 
    while indexCounter < len(dict[key]): 
     otherIndexCounter = 0 
     while otherIndexCounter < len(dict[key]): 
      if indexCounter != otherIndexCounter: 
       if dict[key][indexCounter] == dict[key][otherIndexCounter]: 
        dict[key][otherIndexCounter] = True 
      otherIndexCounter += 1 
     indexCounter += 1 

例:

def changeRepeated(dict): 
    for key in dict.keys(): 
     indexCounter = 0 
     while indexCounter < len(dict[key]): 
      otherIndexCounter = 0 
      while otherIndexCounter < len(dict[key]): 
       if indexCounter != otherIndexCounter: 
        if dict[key][indexCounter] == dict[key][otherIndexCounter]: 
         dict[key][otherIndexCounter] = True 
       otherIndexCounter += 1 
      indexCounter += 1  
    return dict 

dictionary = {'first':['a','b','b'], 'second':['alpha','beta','kappa']} 
dictionary = changeRepeated(dictionary) 

print(dictionary) 
>>> {'first': ['a', 'b', True], 'second': ['alpha', 'beta', 'kappa']} 

だからそれはあなたの出力です:

{'first': ['a', 'b', True], 'second': ['alpha', 'beta', 'kappa']} 

助けて欲しいと思っています:)

関連する問題