#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. Можете ли вы объяснить мне, как происходит вывод на следующую итерацию ? Теперь я все исправил… Но я не вижу, как вывод будет передан на следующую итерацию, если он будет сброшен в начале функции