Та же функция , другие результаты, если я помещу ее в цикл while/for

#python #for-loop #while-loop

Вопрос:

Давайте взглянем на следующий код :

 sentimentos = pd.read_json('/content/sample_data/words_sentiment.json')   sentiment_dict = sentimentos.to_dict('dict')  def get_sentiment(token):  output = {}   for word in token:  if(word in sentiment_dict):  if(output == {}):  output = sentiment_dict[word]  else:  for key in output:  output[key]  = sentiment_dict[word][key]  return output   

Если я вызову функцию таким образом, я получу результат :

 i= 0  lista_de_noticias[i]['sentimento'] = get_sentiment(lista_de_noticias[i]['token'])  lista_de_noticias[0]  

Исход :

 {'publishdatetheadlinetext': '20130504tCOnSTELlATIon DaG iS nOW liStEd On kucoiN eXC?haNGE',  'sentiment': None,  'sentimento': {'anger': 0,  'anticipation': 0,  'disgust': 0,  'fear': 0,  'joy': 0,  'negative': 0,  'positive': 1,  'sadness': 0,  'surprise': 0,  'trust': 1},  'token': ['constellation',  'dag',  'is',  'now',  'listed',  'on',  'kucoin',  'exchange']}   

НО , если я вызову его в цикле while , я получу что-то вроде этого :

 i= 0  while i lt; len(lista_de_noticias):  lista_de_noticias[i]['sentimento'] = get_sentiment(lista_de_noticias[i]['token'])  i  = 1  lista_de_noticias[0]  

Исход :

 {'publishdatetheadlinetext': '20130504tCOnSTELlATIon DaG iS nOW liStEd On kucoiN eXC?haNGE',  'sentiment': None,  'sentimento': {'anger': 12712114785858651969581446193912820659628183494139666905492974874163687423385205415517353488841604088545383108008235313822306871317505649073673729116301162520913034300327908242194788240986550245822089004993669072990785724841144491452099840702492305626513945991340601992581103250242866161217152397651534086030075920001737547813910294157059927792938633624907025,  'anticipation': 19968981350911579320207592470457174378110200872250389133108114657398676622645110641530154072320551006475797813537646137622251854518540318652205874289661921521631962692396295278885214072169613083689172930116662096609006404366065472632160685365429400785662053353241292482012321107306593917222619860820748640126410251098156887041607274585998624402036520516092622,  'disgust': 2015836671281397816071702820186999858584444100959437611223857696501326693409086043974363139180808338098595020987000091323061220966319043063484729779832135909658989208214654604361064537768423300621002086829361644953937131511410080315576525772128200807005599682295071272756592268279240487140272762156747279975124494848294201587523442022007343126297169736449480,  'fear': 21545330417507587892108633118928330957616948701699144728025134793631747991497092320522685275447612983869360654903118364441147036003359170048020504336638469211651076655051951673959143741419431689154107605492402674767104253260241161343645907172621099831095457430153801436053038251946034039572975140509429524799930039209180384470734586614967039098206113674324872,  'joy': 3657857351665794022908387446453778712017481317562430364292386003766082673465405747462815503395914568510545517356128145595292081744947508646288101096594842847988902936599243803196067164671684868074481868391754689750509696591940029712248072649128789196580704783922099510752981866327695875422270019371829230165425667242757978195102513352519113668756716024289667,  'negative': 23506749332050313073608367630015223582658453639863502667987146999987676382930841169020912483636657929188572290585393497616885693890561887600962553298657295188460710004467562102825089793227192638704434720833698970800336279709586452103459959810412689566442131100813442144251054103918897976298053826127050863680749478981491724761406601767568057765062339223981029,  'positive': 19077527037287836010015912400433705994431388113294641822947702414890303253460896826564269955503531284235839624096618294073373062923704703229452555823531495077968185077648121211810742964768964158746043079799920190841345280934363686223480209719947840717169067855800883816803865516301750481736515222495025129778431955933669757301023150085476689065688096956207471,  'sadness': 4657721927418154725539641247669536675681620817583617567685983384230531127115909838405240091856224971895316459761784783916959718596232410397921443876838453602297112410062560831393478743778869571552029603829850300723785298300269785772017731020205321577288576357882182404870496762342758378814070200267192192279823572040391237423807691897023032035138780411573444,  'surprise': 6253658890962467409399735141981938803330835341609537963956655739903959503222095737913149233099951697302179920395122360878554636580367386892132311283388317612994733500298657265783825558544593734143386633443958374061317405416688774845023682186701722883135061814500501141520967047909535753462702876058259708204843306163997811674493359816903929137322051064542479,  'trust': 6634703894328588597442773198203336223116584867608400601310069613346591932760834577603931413802663927733006352414777970733644463661977146770795327596648846015449044727552516862357943380437983450210527560451877403941042841217212304030631926997492948605100319063715107679738420969376699766114424806453565745303147368878589849011642426483459625058180065218036117},  'token': ['constellation',  'dag',  'is',  'now',  'listed',  'on',  'kucoin',  'exchange']}   

Кто-нибудь может помочь мне найти, в чем проблема ? Потому что я пробовал сам по-разному и в разных формах, но продолжаю получать один и тот же результат.

Разве выход не сбрасывается на каждой итерации ? Я не понимаю, почему я получаю такие высокие значения при вызове функции в цикле.

Комментарии:

1. output = sentiment_dict[word] означает, что вы используете часть входного диктанта в качестве вывода. Любые изменения, которые вы внесете, будут по-прежнему присутствовать на следующей итерации цикла.

2. о, ничего себе , даже сейчас я не понимаю, как это условие создает такую проблему, но это, безусловно, причина.

3. Можете ли вы объяснить мне, как происходит вывод на следующую итерацию ? Теперь я все исправил… Но я не вижу, как вывод будет передан на следующую итерацию, если он будет сброшен в начале функции