2016-02-20 12 views
5

Bu çok kolay olsaydı özür dilerim ama bu sözlüğü nasıl oluşturacağımı anlayamıyorum.sözlük?

yüzden

{"Bob": ["and"], "Anna": ["are", "meeting", "at"], "noon": []} 

elimden öğrendim, ben örnek

"Bob and Anna are meeting at noon" 

için bir dize var ve takip etmiyor-palindrom bir listesini işaret eden tüm palindrom bir sözlük istiyorum bir kelime

word.lower() == word.lower()[::-1] 

ile bir palindrom olup olmadığını kontrol edin ve ben de kelime wi içine bir dize bölebilirsiniz

string.split() 

ama inci nasıl dize üzerinde döngü anlamak ve sadece palindromes böylece anahtarları sözlüğünü oluşturmak ve aynı anda bir liste yapmazlar. herhangi bir yardım

+0

en iyi oturdu cevabı kabul emin olun! (Tabii Cevabım) –

+0

Ben okumak için biraz daha iyi olduğunu düşünüyorum çünkü tjohnson cevabını kabul, pardon – Flo

cevap

2

için

Teşekkür Bu kod çalışması gerekir:

text = "Bob and Anna are meeting at noon" 
words = {} 
last_p = None 
for word in text.split(): 
    word2 = word.lower() 
    if word2 == word2[::-1]: 
     words[word] = [] 
     last_p = word 
    elif last_p: 
     words[last_p].append(word) 
print(words) 

ilk palindrom önce cümlede herhangi kelimeler varsa

, bunlar dikkate alınmayacaktır. Sözlüğündeki öğelerin orijinal düzende kalmasını istiyorsanız, yerleşik dict yerine collections.OrderedDict sınıfını kullanın.

+0

tüm cevaplar Yani onun yerine dize bölünmüş kelimeleri üzerinde döngü vardır – Flo

+0

yardımcı teşekkürler ... Bunu düşünmeliydim – Flo

1
def is_palindrome(word): 
    return word.lower() == word.lower()[::-1] 


def task(string): 
    words = string.split(' ') 
    returned = dict() 
    i = 0 
    while i < len(words): 
     if is_palindrome(words[i]): # if palindrome 
      returned[words[i]] = [] 
      j = i + 1 
      while j < len(words) and not is_palindrome(words[j]): 
       returned[words[i]].append(words[j]) 
       j += 1 
     i += 1 
    return returned 

print(task("Bob and Anna are meeting at noon")) 

deneyin buna bazen kendine yönelik anlamaya ihtiyacımız şeylerden biri, nasıl çalıştığını anlamak için.

Ayrıca son sonucun çiftleri farklı şekilde düzenlenebilir böylece sözlükleri sipariş olmadığını belirtmekte yarar var.

+0

Teşekkür ederim, tüm cevaplarınız – Flo

1
from collections import OrderedDict 

s = "Bob and Anna are meeting at noon" 
d = OrderedDict() 
lastKey = None 

for i in s.split(): 
    if i.upper() == i.upper()[::-1]: 
    d[i] = [] 
    lastKey = i 
    else: 
    if lastKey: d[lastKey].append(i) 

print d 
+0

'a yardım etti Teşekkürler, tüm cevaplarınız yardımcı oldu – Flo