2017-03-23 45 views
-2
def check(string): 
    list2 = {} 

    for eachstring in string: #eachstring in the input string 

      if eachstring.isdigit(): #evaluates if the string is a number 

       list2[int(eachstring)] = string 

    return list2 #This outputs [2: ""h2llo I3", 3: ""h2llo I3"] 
        # I want it so it outputs [2: "h2llo", 3: "I3"]     


print (check("h2llo I3")) 
+0

試試'列表2 [INT(eachstring)] = eachstring' – Thiru

回答

0

這是另一種方式,可能不是最好的。

def check(string): 
string = string.split() 
list2 = {} 
for eachword in string: #each word in the input string 
    for eachstring in eachword: 
     if eachstring.isdigit(): #evaluates if the string is a number 
      list2[int(eachstring)] = eachword 

return list2 # outputs [2: "h2llo", 3: "I3"]     


print (check("h2llo I3")) 
+0

謝謝你,我怎麼會打印字典的值;例如我只想它輸出h2llo I3,當我嘗試下面的代碼時,它只輸出h2llo。我把它放在函數的末尾------對於列表2中的每個值: x = list2 [eachvalue] return x –

+0

用x + = list2 [eachvalue]替換x = list2 [eachvalue]並將x初始化爲如果問的話就這樣開始。 –

0

試試這個,拆你的字符串和迭代每個字符:

def check(string): 
    return {e:i for i in string.split() for e in i if e.isdigit()} 


print (check("h2llo I3")) 

輸出:

{'3': 'I3', '2': 'h2llo'} 
0

你的代碼中的問題是。您將分配整個字符串,或將單詞(eachstring)分配爲字典中的值。

嘗試list2[int(eachstring)] = eachstring

0
def check(string): 
    list2 = {} 
    nu = string 
    for char in string: #use char present the one char 

     if char.isdigit(): 
      nu = nu.split(' ') 
      list2[int(char)] = nu[0] 
      del nu[0] 
      nu = ' '.join(nu) 

    return list2 

,這將是right.your list2[int(eachstring)] = string將會把所有的整個輸入是你的價值。

相關問題