簡體   English   中英

打印字典的相應元素

[英]printing the corresponding elements of dictionary

這是我在這里提出的問題的解決方案,該問題是分配一個帶有兩個組合的字符串並將它們分隔在列表中 前面的問題是一個示例,下面是實際的程序。

import sys

param_values = {
            'vowels':{
            'aa' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,1.0),   (-1,-1)],     
            'ae' : [(-1,-1),   (-1,-1),    (0.1,0.8), (-1,-1),   (0.1,1.0),   (-1,-1)], 
            'ah' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,1.0),   (-1,-1)], 
            'ao' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.2,1.0),   (-1,-1)], 
            'eh' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,1.0),   (-1,-1)], 
            'er' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.15,0.7),  (-1,-1)], 
            'ey' : [(-1,-1),   (-1,-1),    (0.3,1.0), (-1,-1),   (0.1,0.5),   (-1,-1)],
            'ih' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.8),   (-1,-1)], 
            'iy' : [(-1,-1),   (-1,-1),    (0.2,1.0), (-1,-1),   (0.1,0.8),   (-1,-1)], 
            'uh' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (-1,-1),     (0.1,1.0)], 
            'uw' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (-1,-1),     (0.1,1.0)],   
            'o'  : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (-1,-1),     (0.4,1.0)]       
            },
            'consonants':{
            'b'  : [(-1,-1),   (0.0,0.0),  (-1,-1),   (-1,-1),   (0.1,0.8),   (-1,-1)], 
            'ch' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.4),   (-1,-1)], 
            'd'  : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.4),   (-1,-1)], 
            'dh' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.35),  (-1,-1)], 
            'dx' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.35),  (-1,-1)], 
            'f'  : [(0.3,1.0), (-1,-1),    (-1,-1),   (-1,-1),   (-1,-1),     (-1,-1)], 
            'g'  : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.8),   (-1,-1)], 
            'hh' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.8),   (-1,-1)], 
            'jh' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.8),   (-1,-1)], 
            'k'  : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.8),   (-1,-1)], 
            'l'  : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.4),   (-1,-1)], 
            'm'  : [(-1,-1),   (0.0,0.0),  (-1,-1),   (-1,-1),   (0.1,0.8),   (-1,-1)], 
            'n'  : [(-1,-1),   (0.1,1.0),  (-1,-1),   (0.3,1.0), (0.0,0.0),   (-1,-1)], 
            'ng' : [(-1,-1),   (0.1,1.0),  (-1,-1),   (-1,-1),   (0.0,0.0),   (-1,-1)], 
            'p'  : [(-1,-1),   (0.0,0.0),  (-1,-1),   (-1,-1),   (0.1,0.8),   (-1,-1)], 
            'r'  : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.4),   (-1,-1)], 
            's'  : [(-1,-1),   (0.1,1.0),  (-1,-1),   (0.3,1.0), (0.0,0.0),   (-1,-1)],
            'sh' : [(-1,-1),   (0.1,1.0),  (-1,-1),   (0.3,1.0), (0.0,0.0),   (-1,-1)], 
            't'  : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.4),   (-1,-1)], 
            'th' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.4),   (-1,-1)], 
            'v'  : [(0.3,1.0), (-1,-1),    (-1,-1),   (-1,-1),   (-1,-1),     (-1,-1)], 
            'w'  : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (-1,-1),     (0.1,1.0)], 
            'y'  : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.6),   (-1,-1)],  
            'z'  : [(-1,-1),   (0.1,1.0),  (-1,-1),   (0.3,1.0), (0.0,0.0),   (-1,-1)], 
            'zh' : [(-1,-1),   (-1,-1),    (-1,-1),   (-1,-1),   (0.1,0.6),   (-1,-1)] 
             }                         
            }

diphthong = { 
             'aw' : ['ao' , 'uw'],
             'ay' : ['ao' , 'ih'],
             'ow' : ['o' , 'aa'],
             'oy' : ['o' , 'ih']
            }   

def Usage() :
    print "Usage :python co.py phonemeFile"

def coart(phonemeFile):
    """ Function for generating parameter values looking from the global list """
    phonemeList = []
    with open("syllabifiedPhonemes.txt", "r") as pFile :
        for line in pFile :
            l = line.split()
            for phoneme in l : 
                next_phoneme = diphthong.get(phoneme)
                if next_phoneme is None :
                    phonemeList.append((phoneme, param_values.get(phoneme)))

                else : 
                    phonemeList.extend([(phoneme, param_values.get(phoneme)) for phoneme in next_phoneme])

            print "New List"
            print '\n'.join(str(l) for l in phonemeList)

if __name__ == '__main__':
    if len(sys.argv) != 2 : 
        Usage() 

    else :
        phonemeFile = sys.argv[1]

        coart("syllabifiedPhonemes.txt")

輸入文件syllabifiedPhonemes.txt具有以下內容:

s aa ' m ih ' k l eh k ' t aa ' n ih t ' g eh l ' v ae ' n ih ' k aa ' p l ay k

我得到的輸出如下:

New List
('s', None)
('aa', None)
("'", None)
('m', None)
('ih', None)
("'", None)
('k', None)
('l', None)
('eh', None)
('k', None)
("'", None)
('t', None)
('aa', None)
("'", None)
('n', None)
('ih', None)
('t', None)
("'", None)
('g', None)
('eh', None)
('l', None)
("'", None)
('v', None)
('ae', None)
("'", None)
('n', None)
('ih', None)
("'", None)
('k', None)
('aa', None)
("'", None)
('p', None)
('l', None)
('ao', None)
('ih', None)
('k', None)

現在的問題是,如何顯示帶有值的完整字典? 我可以看出,由於元音和輔音是分開的,所以打印方式不正確。 忽略元音和輔音標簽,如何獲得以下輸出?

('s', [(-1, -1), (0.10000000000000001, 1.0), (-1, -1), (0.29999999999999999, 1.0), (0.0, 0.0), (-1, -1)]) 

PS對於撇號,無任何限制,因為它們不在字典中。

謝謝。

用以下內容替換添加音素的部分:

if next_phoneme is None :
    phonemeList.append((phoneme, param_values.get(phoneme)))
else : 
    phonemeList.extend([(phoneme, param_values.get(phoneme)) for phoneme in next_phoneme])

這將添加完整的元組,而不僅僅是名稱。

代替

phonemeList.append(phoneme)

你需要:

phonemeList.append((phoneme, param_values[phoneme]))

您的打印對帳單也將得到簡化,只需要是:

print phonemeList

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM