2016-03-06 68 views
0

的變量數A字符串:格式化字典與給定一個字典</p> <pre><code>x = {'b': {d}, 'a': {'b', 'c'}, 'd': {'g'}, 'f': {'d', 'g'}, 'c': {'e', 'f'}, 'e': {d}} </code></pre> <p>我希望有一個功能,將打印出的值

a -> ['b', 'c'] 
    b -> ['d'] 
    c -> ['e', 'f'] 
    d -> ['g'] 
    e -> ['d'] 
    f -> ['d', 'g'] 

我寫了這個:

def graph_as_str(graph : {str:{str}}) -> str: 
    graphString = '' 
    for key in sorted(graph): 
     graphString += ' {} -> ['.format(key) 
     for value in sorted(graph[key]): 
      graphString += '\'{}\', '.format(value) 
     graphString = graphString[:-2] 
     graphString += ']\n' 
    return graphString 

它的工作原理很糟糕。我怎樣才能讓這個更好?

+0

這是一個錯字? ''a':{'c','d'}''a - > ['b','c']' – sabbahillel

+0

是的,謝謝。我只是改變了它。對於那個很抱歉! – Upstreamer

回答

0

假設你的意思是你的任務是這樣的:

x = {'b': {'d'}, 'a': {'b', 'c'}, 'd': {'g'}, 'f': {'d', 'g'}, 'c': {'e', 'f'}, 'e': {'d'}} 

(帶鍵「B」和「E」關聯的值都在引號中,並與鍵關聯的值「a」是{'B 」, 'C'},{不是 'C', 'd'})

那麼這會給你列出的輸出:

for k in sorted(x.keys()): 
    print("{} -> {}".format(k, sorted(list(x[k])))) 
+0

完美,謝謝! – Upstreamer

0
x = {'b': {'d'}, 'a': {'c', 'd'}, 'd': {'g'}, 'f': {'d', 'g'}, 'c': {'e', 'f'}, 'e': {'d'}} 


def graph_as_str(x): 
    sorted_x = sorted(x) 

    for i in x: 
     print i, "-->", list(x[i]) 

希望這使你需要什麼並且簡單得多。請享用!!!!

+1

是的,我忘了默認情況下,如果你遍歷一個字典,它遍歷鍵。所以我的答案中的'.keys()'部分是不必要的。我的錯。 – jfsturtz

0

假設d是指被引用,以及:

x = {'b': {'d'}, 'a': {'c', 'b'}, 'd': {'g'}, 'f': {'d', 'g'}, 
    'c': {'e', 'f'}, 'e': {'d'}} 

x_str = '\n'.join([key + ' -> ' + str(sorted(list(val))) 
        for key, val in sorted(x.iteritems())]) 
print(x_str)  
0

OP做請求的功能,並給了一個精確的格式:

x = {'b': {'d'}, 'a': {'c', 'b'}, 'd': {'g'}, 'f': {'d', 'g'}, 'c': {'e', 'f'}, 'e': {'d'}} 

def graph_as_str(graph: {str:{str}}) -> str: 
    return "\n".join(" {} -> {}".format(key, sorted(value)) for key, value in sorted(graph.items())) 
相關問題