2016-07-18 36 views
0

私は下線に達するまで各キーを逆方向に読みたい辞書を持っています。それがアンダースコアに達すると、それは停止して、そのアイテムを新しい変数と等しく設定することができます。辞書のキーを後ろに印刷する方法

私はstr.partition()を使用して特定の文字を区切り、[:: - 1]を使用して文字列を後方に読み取ることができることを理解していますが、これらを一緒に使用する方法はわかりません辞書。

あなたは(私は繰り返し処理中に辞書に新しい要素を追加する場合、それ以外の場合はエラーになり、のpython3であなたはリストにこれらのイテレータを変換する必要があり、 iteritems()keys()または items()で辞書を反復処理する必要はありません
Payload_Values = {'Voltage_asleep(V)' : 10, 'Current_asleep(A)' : 5, 'Wattage_asleep' : 50} 
    for c in (Payload_Values.keys()) 
     Payload_Values.partition(_) 
+1

私は* *それは私が新しい変数に等しいその項目を設定することができますので、停止する必要があります理解していません。下線の後のテキストが他のテキストに置き換えられる新しい文字列を作成したいということですか?そうでない場合は、変更しようとしている変更の前後にどのようなデータが必要かを示す例を挙げることができますか? – nekomatic

答えて

0

ちょうど言及すると、これはあなたの例では大丈夫でした)。それ以外の場合は、ソリューションの近くにいます。私はちょうど完全に理解していない、あなたはキーで何をしたいですか?印刷しますか?最後のアンダースコアの後の部分を取る?新しいKey-Valueペアを設定しますか?これを知らずに、私はすべての組み合わせを提示しようとしています、あなたが何かを必要とする場合は、より具体的な質問してください:

# this is because Python3 compatibility: 
from __future__ import print_function 
from future.utils import iteritems 

for key, val in iteritems(Payload_Values): 
    # new key is the part after the last underscore 
    # or the whole string, if it does not contain underscore: 
    new_key = key.split('_')[-1] 

    # new key is the elements separated by `_`, reversed 
    # and rearranged to a string: 
    key_rev = '_'.join(key.split('_')[::-1]) 

    # new key is the complete string reversed: 
    new_key = key[::-1] 

    # 
    # set a new element with the new key: 
    Payload_Values[new_key] = 'your new value' 

    # print the new key: 
    print(new_key) 

# if you want to modify the dict in this loop: 
for key, val in list(Payload_Values.items()): 
    # ... 
    Payload_Values[some_key] = some_value 
+0

new_key = key.split( '_')[ - 1]は、私が探していたものに最も近いものです。残念ながら、それを使用すると、それに関連付けられた数値の元のキーが削除されるように見えます。番号を割り当てたままにする方法はありますか? –

+0

それから 'iteritems'で反復する必要があるので、私はそれに応じて例を修正しました。 Python2には 'dict.iteritems()'がありますが、Python3との互換性のために、 'future.utils'のiteritemを使って表示します。このようにして、反復に沿った各キーの対応する値( 'val')が得られます。 – deeenes

+0

また、ループ内のdictを変更したい場合、私はちょうど底に没頭したソリューションを選択する必要があります。 – deeenes

関連する問題