2015-12-09 3 views
1

Это моя первая программа на питоне, я некоторое время читал о python, и программа работает, но я не думаю, что все делала правильно. вот кодпервая программа python выглядит неправильно

dict_top = {'a':[0], 'b':[0], 'c':[0], 'd':[0], 'e':[0], 'f':[0], 'g':[0], 
      'h':[0], 'i':[0], 'j':[0], 'k':[0], 'l':[0], 'm':[0], 'n':[0], 
      'o':[0], 'p':[0], 'q':[0], 'r':[0], 's':[0], 't':[0], 'u':[0], 
      'v':[0], 'w':[0], 'x':[0], 'y':[0], 'z':[0]} 

with open('planet-names.txt') as file_object: # this will automatically close 
    for planet_name in file_object: 
     for letter in planet_name: 
      if letter in dict_top: 
       a = dict_top[letter][0] 
       dict_top[letter][0] = a + 1 
       dict_top[letter].append(planet_name.find(letter)) 

print(dict_top) 

planet-names.txt только название планеты на каждой линии Я хочу, чтобы сосчитать раз A, B, C происходят в каждом имени кучу планет , а также записывать различные позиции они были найдены в.

Это не домашнее задание! Я пытаюсь сделать программу, которая генерирует имена планет случайно!

Как вы должны кодировать такие вещи, как dict_top? что взял меня, как час, чтобы напечатать все, что Использовать

+0

не домашнее задание ??? – PradyJord

+0

Какую распечатку вы получаете? И какую распечатку вы ожидали? Каково содержание 'planet-names.txt'? – skyking

ответ

3

collections.Counter

import collections 
c = collections.Counter() 
with open('planet-names.txt') as file_object: # this will automatically close 
    for planet_name in file_object: 
     c.update(collections.Counter(planet_name)) 

print c 

или вы можете создать Dict с помощью dict.fromkeys

import string 
dict_top = dict.fromkeys(list(string.ascii_lowercase),[0]) 
+0

Спасибо, что это займет у меня некоторое время, чтобы посмотреть .. – madness

+0

Я получил результат, который я хотел, но программа не выглядела правильно, я знал, что я не делал этого правильно – madness

1

Вы хотите определить Dict сверху каким-то умным способом? Если да, то используйте

from string import ascii_lowercase 
dict_top = {} 
for char in ascii_lowercase: 
    dict_top[char] = [0] 
+1

python 2.7 вводит словарные понятия 'dict_top = {char: [0] для char в ascii_lowercase} ', но хороший ответ для новичка, я полагаю –

+0

Да, просто хотел добавить этот способ) На самом деле я считаю, что существует слишком много способов определить этот dict в 1-2 строках – Andy

+0

Да, это то, что я искал! – madness

0

Используйте fromkeys:

from string import ascii_lowercase 
dict_top=dict.fromkeys(list(ascii_lowercase,[0]) 
0

Предположим, имена файлов containe 'земля', 'jupitor', 'SATURN', 'Плутона

dict_top = {'a':[0], 'b':[0], 'c':[0], 'd':[0], 'e':[0], 'f':[0], 'g':[0], 'h':[0], 'i':[0], 'j':[0], 'k':[0], 'l':[0], 'm':[0], 'n':[0], 'o':[0], 'p':[0], 'q':[0], 'r':[0], 's':[0], 't':[0], 'u':[0], 'v':[0], 'w':[0], 'x':[0], 'y':[0], 'z':[0]} 

with open('planet-names.txt') as file_object: 
    for planet_name in file_object.readlines(): 
     for letter in planet_name: 
      if letter in dict_top: 
       dict_top[letter][0] += 1 

print(dict_top) 

Это вернет счет как:

{'a': [2], 
'b': [0], 
'c': [0], 
'd': [0], 
'e': [1], 
'f': [0], 
'g': [0], 
'h': [1], 
'i': [1], 
'j': [1], 
'k': [0], 
'l': [1], 
'm': [0], 
'n': [1], 
'o': [2], 
'p': [2], 
'q': [0], 
'r': [3], 
's': [1], 
't': [4], 
'u': [3], 
'v': [0], 
'w': [0], 
'x': [0], 
'y': [0], 
'z': [0]} 
0

Добро пожаловать на Python!

«список понимание» (или ДИКТ понимание в данном случае) одна вещи, которую вы будете любить:

dict_top = {k:[0] for k in "abcdefghijklmnopqrstuvwxyz"} 

Однако я бы писать (не думая, чтобы много) по-разному, как я предполагаю, что буквы которые не появляются в любом имени бесполезны:

dict_top = {} 
with open('planet-names.txt') as file_object: 
    for planet_name in file_object: 
     for i,letter in enumerate(planet_name): 
      try: 
       dict_top[letter][0] +=1 
       dict_top[letter].append(i) 
      except KeyError: 
       dict_top[letter]=[1,i] 

о «перечислить» проверить https://docs.python.org/3.5/library/functions.html

Удачи!

Смежные вопросы