2017-03-31 30 views
-3

私の後ろにPythonのクラスを持っていたので、私は次の授業でこの質問を提示し、私も開始する方法で精神的なブロックを持っているように思われました。辞書に文字列を入れる

"ユーザーに文字列を要求するPythonプログラムを作成し、次の辞書を作成します。値は文字列内の文字で、対応するキーは文字列内の場所です。 D = {'A':0、 'B':1、 'C':2、 '1':3、 '2':4、 '3':5}

文字列 "ABC123"

私は、しかし、私は次のステップに進むのか分からない。すべてのヘルプははるかに高く評価されるだろう

s = input('Enter string: ') 

のような単純なもので、ユーザの入力を求めて始めた。

+0

ようこそ[so]。失礼なことではありませんが、ボランティアとして、私たちの助けはあなたの時間の苦しみに基づくものではありません。 [ask]を確認して試してみてください。私たちはあなたの宿題をするためにここにいるわけではありません。 – TemporalWolf

+1

入力が '' AA''の場合に期待される出力は? – Goyo

+0

期待出力は= { 'A':0、 'A':1} Dとなりまた 、私は私の質問を言葉で表現する方法については申し訳ありません。それがそうするように見えるようにするつもりはありませんでした。私は今それを編集しました。 – garow93

答えて

1
In [55]: s = input("Enter a string: ") 
Enter a string: ABC123 

In [56]: d = {char:i for i,char in enumerate(s)} 

In [57]: d 
Out[57]: {'C': 2, '1': 3, '2': 4, '3': 5, 'B': 1, 'A': 0} 

注しかし、ユーザーの入力中の文字が繰り返された場合、dは、各文字が最後に出現する位置のインデックスがありますこと:

In [62]: s = input("Enter a string: ") 
Enter a string: ABC123A 

In [63]: d = {char:i for i,char in enumerate(s)} 

In [64]: d 
Out[64]: {'C': 2, '1': 3, '2': 4, '3': 5, 'B': 1, 'A': 6} 
+0

残念ながら、すべての文字のすべてのインスタンスを表示する必要があると思います。したがって、AAA121が入力された場合、次のようになります。 d = {'A':0、 'A':1、 'A':2、 '1':3、 '2':4、 '1':5 } アイデアをお探しですか?また、入力のおかげで、列挙について知りませんでした。 – garow93

+0

これは辞書がどのように動作するかではないため、このタスクに間違ったデータ構造を使用しています。あなたは、キーが文字である辞書を使用することができ、その値はその文字が文字列内にある位置のリストです。しかし、それはあなたのコメントに例を複製しません – inspectorG4dget

0

これを?

def dict(): 
    user_input = input("Please enter a string") 
    dictionary = {} 
    for i, j in enumerate(user_input): 
     dictionary[j] = i 
    print(dictionary) 
dict("ABC123") 
0

この出力を必要とするよろしいです:D = { 'A':0、 'B':1、 'C':2、 '1':3 '2':4「3 ':5'ではなく、D = {0: 'A'、1: 'B'、2: 'C' ...}?あなたはキー:値を反転することができますが、それらは順不同です(例えば、D = {'B':1、 '3':5、 'A':0、 'C':2 ' 1 ':3、' 2 ':4}または任意の他のランダムな組み合わせ)。

あなたが学習のpythonを使い始めるされているように聞こえます。美しいプログラミング言語へようこそ。人々はここで非常に役に立ちますが、努力とイニシアチブを示す必要があります。これは迅速な解決策を得る場所ではありません。人々はあなたにそれらを提供するかもしれませんが、あなたは学ばないでしょう。

これはハードウェア関連の問題だったと思いますか?私が間違っていない限り(誰かが私を修正しようと自由に感じてください)、あなたが探している出力は、作成することが不可能ではないにしても難しいです(例えば、あなたが望む特定の順序で)。私はあなたがPython dictionariesについて読むことをお勧めします。

試してみて、これを実行します。間違ったイムない限り

#user = input("Give me a string:") 

#Just for demo purpose, lets 
#stick with your orig example 

user = "ABC123" 

ls =[] #create empty list 
d = {} #create empty dictionary 

#Try to figure out and understand 
#what the below code does 
#what is a list, tuple, dict? 
#what are key:values? 

for l in enumerate(user): 
    ls.append(l) 

    for k,v in ls: 
     d[k] = v 

print('first code output') 
print(ls) 
print(d) 

#What/how does enumerate work? 
#the below will generate a 
#ordered dict by key 


for k,v in enumerate(user): 
    d[k] = v 

print('2nd code output') 
print(d) 


#you want to flip your key:value 
#output, bases on origibal question 
#notice what happens 
#run this a few times 

print('3rd code output') 

print(dict(zip(d.values(), d.keys()))) 


#You can get the order you want, 
#but as a list[(tuple)], not as 
#a dict at least in the output 
#from your orig question 

print(list(zip(d.values(), d.keys()))) 

を、そしてより多くの経験豊富な誰かがチャイムができ、あなたがあなたの辞書に必要なフォーマットで出力を「注文」を取得傾けます。

私は、モバイルデバイス上でだので、誰もが物事を修正すること自由に感じなさい。

関連する問題