Novice programmer burada. Kendi Kendine Öğrenme Python. Stackoverflow hakkında ilk soru.Python'da birden fazla veri yapısı (dicts) oluşturma
Kullanıcının fiyat, değerlendirme ve mutfak türü seçimini temel alarak bir restoran önermek üzere bir program yazmaya çalışıyorum. Bunu başarmak için, program üç veri yapılarını oluşturur:
#Rest name
#Rest Rating
#Rest Price range
#Rest Cuisine type
#
#Rest2 name
vb
:# Initiating the data structures
name_rating = {}
price_name = {}
cuisine_name = {}
verileri aşağıdaki biçimlendirme ile restaurants.txt gelir [I, bir ara aşamada hala değilim]
izleyen fonksiyon, arzu edilen dizi sadece dize döndürür
# The get_line function returns the 'line' at pos (starting at 0)
def get_line(pos):
fname = 'restaurants.txt'
fhand = open(fname)
for x, line in enumerate(fhand):
line = line.rstrip()
if not pos == x: continue
return line
# Locating the pos's of name, rate, price & cuisine type for each restaurant
# Assumes uniform txt file formatting and unchanged data set
name_pos = [x for x in range(0,84,5)]
rate_pos = [x for x in range(1,84,5)]
price_pos = [x for x in range(2,84,5)]
cuis_pos = [x for x in range(3,84,5)]
Increme Her restoran için ayrı ayrı veri almak için 5 ile nts.
fname = 'restaurants.txt'
fhand = open(fname)
aşağıdaki döner adının bir sözlük: derecelendirme
# Builds the name_rating data structure (dict)
def namerate():
for x, line in enumerate(fhand):
line = line.rstrip()
for n, r in zip(name_pos, rate_pos):
if not n == x: continue
name_rating[line] = name_rating.get(line, get_line(r))
return name_rating
aşağıdaki getiri
fiyatın bir sözlüğü: işlevleriniprint pricename()
print namerate()
questio çağrılması
# Builds the price_name data structure (dict)
def pricename():
for x, line in enumerate(fhand):
line = line.rstrip()
for p, n in zip(price_pos, name_pos):
if not p == x: continue
price_name[line] = price_name.get(line, get_line(n))
return price_name
isim N: Fonksiyonları aradığımda, neden sadece ilk aradığımın başarılı olduğu oluyor? İkinci dict boş kalır. Onları ayrı ayrı ararsam, veri yapıları inşa edilir. İkisini de ararsam, sadece ilk başarılı olur.
p.s. Eminim tüm bunları daha hızlı yapabilirim ama şimdilik kendim yapmaya çalışıyorum, bu yüzden bazıları gereksiz veya gereksiz görülebilir. Lütfen benimle ayı :)
bir belgeyi açıp ilk fonksiyonunda okuma, bunu sonuna ulaşmak ve sonra ikincisinizle, * sonundan daha fazla * okumaya çalışıyorsunuz, bu nedenle –