2014-04-14 27 views
0

使用戶進入他們想讀txt文件,文本文件通常包含如何使它所以只有鑰匙顯示dict-蟒蛇

a eats b 
b eats c 
c eats d 

f_web = open(input('enter text wanted evaluated:')) 

def web(enter text): 
    food_web = f_web 
    tuple_data = [] 
    for line in food_web: 
     a = line.strip().split() 
     tuple_data.append((a[0].strip(), a[-1].strip())) 
    output = defaultdict(list) 
    for x, y in tuple_data: 
      output[x].append(y) 
    print ('Predators and Prey:') 
    for Predators, Prey in output.items(): 
     values = ' , '.join(Prey) 
     print ('\t{} eats {}'.format(Predators, values)) 
    return web 
    web(f_web) 

我想我的程序來顯示當前的東西,事後顯示哪些掠食者只是掠食者而且從不吃東西。所以像這樣的

從來沒有吃過:

一個

+0

打開(輸入...)可能會引發錯誤... –

+0

我編輯它,但如何將ü建議我改變呢? – user3531022

+0

在一行中調用輸入,並在另一個文件中打開輸入。 –

回答

1

你應該嘗試使用一個dictionary

fl = str(input('Enter text wanted evaluated: ')) 

with open(fl, 'r') as f: 
f = f.read().split('\n') 

f_dict = {} 

for i in f: 
    i = i.split() 
    if i[0] in f_dict: 
     f_dict[i[0]].append(i[2]) 
    else: 
     f_dict[i[0]] = [i[2]] 

a = [] 
for i in f_dict: 
    for j in f_dict.values(): 
     if i in j: 
      break 
     a.append(i) 

a = list(set(a)) 

for i in f_dict: 
    print i+' eats '+', '.join(f_dict[i]) 

print('') 
print('Never Eaten') 
for i in a: 
    print i 

[Out]: 
a eats b, d, c 
c eats d 
b eats c, d 

Never Eaten 
a 
+0

,因爲我也想要吃誰誰吃誰的原始序列誰是從來沒有吃過的。 – user3531022

+0

@ user3531022,那裏。現在工作。只需添加打印語句。 – sshashank124

+0

你的代碼的輸出真的很奇怪嘗試運行我的程序它運行,所以第一部分顯示在適當的句子和標點符號而不是隻是一個鍵和值的列表 – user3531022

0

步驟:

  1. 打開文件並讀取每一行,分裂'eats'
  2. 第一價值附加到一個名爲predator列表中,如果它已不是在prey(如果它沒有被2次價值),如果是在predator,它是爲獵物,刪除它從predator和它到prey
  3. 打印所有值在predator

    open('file.txt') 
    predators = [] 
    eaten = [] 
    for lines in file: 
        lines = lines.split('eats') 
        predator, prey = lines 
        if predator not in eaten: 
         predators.append(predator) 
        if prey in predator: 
         del(predator[prey]) 
        eaten.append(prey) 
    print 'Never eaten:' 
    for k in predators: 
        print k 
    

運行作爲:

Never eaten: 
a