Daha çox

Sahə kalkulyatorunda hər qrup üçün bir sıra təyin edin


Hər birinin adı olan bir neçə min xüsusiyyətim var. Adlar unikal deyil. sahə kalkulyatoru ilə etmək istədiyim hər bir ada bir nömrə təyin etməkdir ki, bir saya müraciət edib hər zaman eyni adı alım.

Məsələn:

chris, dave, chris, tom, dave, chris, dave, tom

Sayı sütununun göstərilməsini istəyirəm

1, 2, 1, 3, 2, 1, 2, 3

Bu, sahə kalucatorunda pitondan istifadə edərək edə biləcəyim bir şeydir?


Əgər bütün mümkün giriş dəyərlərini əvvəlcədən bilirsiniz, bunu "Codeblock" u açaraq aşağıdakı kimi bir funksiya yaradaraq Sahə Kalkulyatoru ilə etmək mümkündür:

def classify (ad): if name == 'chris': return 1 elif name == 'dave': return 2 elif name == 'tom': return 3 else: return 0

Və sonra bu funksiyanı istifadə edərək başqa bir ədədi sahəni hesablamaq üçün istifadə edəcəyiniz ifadə belə olacaq:

təsnif edin (! NAME_FIELD!)

Əgər sən etmə mümkün olan bütün dəyərləri əvvəlcədən bilmək və ya bu qədər yazmaq gülünc olacağını bilməkelifHər biri üçün açıqlama, ehtimal ki, Sahə Kalkulyatorunu istifadə etmək əvəzinə sizin üçün bunu etmək üçün xüsusi bir Python skriptini yazmalısınız.


Redaktə edin: Şərhlərdə müzakirə olunduğu kimi, hər bir unikal mətn dəyərinə verilən xüsusi ədədi dəyərlə maraqlanmırsınızsa, bu, ehtimal ki, kod blokundakı qlobal bir siyahı dəyişənlə, aşağıdakı kodla (şərhinizə əsasən) edilə bilər:

mylist = [] def classifier (value): dəyər mylistdə deyilsə qlobal mylist: mylist.append (value) return mylist.index (value)

Bəs adları bir lüğətə düymələr kimi atmaqla dolaşmaq? Açar yoxdursa, dəyər əlavə etmək üçün sayğacdan istifadə edin, əks halda açarın dəyərini istifadə edin. Yəni 'Chris' ilk qarşılaşdıqda mövcud deyil; 'Chris' açar və 1 dəyər olur. Sonra 'Dave sonradır, mövcud deyil, buna görə dəyəri 2 olaraq yeni bir açar olur. Sonra yenidən 'Chris' ilə qarşılaşılır, lakin Chris onsuz da bir açar olaraq mövcuddur, beləliklə, 1, dəyəri istifadə olunur və s.


Videoya baxın: İNFORMATİKA SUALLARIN İZAHI MSİ-4 2020-2021 (Oktyabr 2021).