2016-03-06 71 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())) 
相关问题