2016-06-16 10 views
0

辞書とリストを文章に解凍したいと思います。例:forループを使用して辞書を反復処理する方法はありますか?

newlist = [1, 2, 3, 4, 5, 6] 
new_dictionary = {'code': 2, 'help': 6, 'broken': 4, 'is': 3, 'please': 5, 'my': 1} 

元の文は'My code is broken please help'です。リストには、単語が文章内に現れる位置が表示されます。辞書には、単語とその単語が関連する位置が格納されます。

目的は、リスト内の数字と一致するまで辞書を反復することです。これが起こると、値に一致するキーがリストに追加されます。これはリストに番号がなくなるまで続きます。リストは文字列に変換され、ユーザーに印刷されます。

私はこのような何かが解決策になることを想像:

for loop in range(len(newlist)): 
    x = 0 
    for k,v in new_dictionary.items(): 
     if numbers[x] == v: 
       original_sentence.append(k) 
     else: 
       x = x + 1 

print(original_sentence) 

しかし、コードは単に空のリストを出力します。コードが動作するようにforループを再編成するか再編成する方法はありますか?

+3

なぜ辞書を逆転させないので、単語の代わりに位置を単語に置き換えますか?そして、これは簡単です。 – jonrsharpe

+0

実際のユースケースは何ですか?このコードは何をする予定ですか?あなたはこれを何のために使っていますか?また、あなたが意味することは ''目指すのは、リスト上の数字に一致するまで辞書を繰り返すことです。 – Keatinge

+0

あなたのコードは 'original_sentence'と' numbers'が定義されていないので、まったく動作しません。作業中の_actual_コードを投稿してください。 – Selcuk

答えて

2

私はあなたがこのような何かを試すことができますので、あなたは、辞書を反転させたくないと仮定します。

import operator 
new_dictionary = {'code': 2, 'help': 6, 'broken': 4, 'is': 3, 'please': 5, 'my': 1} 
sorted_x = sorted(new_dictionary.items(), key=operator.itemgetter(1)) 
print ' '.join(i[0] for i in sorted_x) 

結果

'my code is broken please help' 

単一ライン全体コード。

In [1]: ' '.join([item[0] for item in sorted(new_dictionary.items(), key=operator.itemgetter(1))]) 
Out[1]: 'my code is broken please help' 
4

辞書を逆順にして処理を進めます。次のコードを試してください。

dictionary = {'code': 2, 'help': 6, 'broken': 4, 'is': 3, 'please': 5, 'my': 1} 
numbers = [1, 2, 3, 4, 5, 6] 

sentence = [] 
for number in numbers: 
    for key in dictionary.keys(): 
     if dictionary[key] == number: 
      sentence.append(key) 
      break 
1

が値を使用して辞書を選別:

>>> d = {'code': 2, 'help': 6, 'broken': 4, 'is': 3, 'please': 5, 'my': 1} 
>>> numbers = [1, 2, 3, 4, 5, 6] 
>>> d_inv = {v:k for k,v in d.items()} 
>>> ' '.join([d_inv[i] for i in numbers]) 
'my code is broken please help' 
+0

これは素晴らしいですが、OPは 'newlist = [1、2、3、4、5、6]'という名前のリストで定義された順序で文を探しています。この例ではソートされているだけです。 –

+0

@AbdulFatirそうです。受注の形で希望のリストがある場合にのみ動作します。 –

関連する問題