python反向/转置字典

python反向/转置字典,python,dictionary,Python,Dictionary,我正在寻找一本关于python的词典,环顾四周后,我没有找到一个解决方案。有人知道我怎样才能把下面这样的字典翻过来作为输入: 因此,我得到了如下结果: newgraph = {'A': [''], 'B': ['A'], 'C': ['A', 'B', 'D','F'], 'D': ['B', 'C'], 'E': [''], 'F': ['E']} 使用: 虽然将空字符串'放在空列表中似乎没有任何意义,

我正在寻找一本关于python的词典,环顾四周后,我没有找到一个解决方案。有人知道我怎样才能把下面这样的字典翻过来作为输入:

因此,我得到了如下结果:

newgraph = {'A': [''],
         'B': ['A'],
         'C': ['A', 'B', 'D','F'],
         'D': ['B', 'C'],
         'E': [''],
         'F': ['E']}
使用:

虽然将空字符串
'
放在空列表中似乎没有任何意义,但肯定有可能:

for x in newgraph:
    newgraph[x] = newgraph[x] or ['']
使用:


也可以不使用
defaultdict
。 在这里,我在新的dict中留下了空键,值为None

graph = {'A': ['B', 'C'],
             'B': ['C', 'D'],
             'C': ['D'],
             'D': ['C'],
             'E': ['F'],
             'F': ['C']}

g = dict.fromkeys(graph.keys())
for k, v in graph.iteritems():
  for x in v:
    if g[x]: g[x] += [k]
    else:    g[x] = [k]

for k in sorted(graph.keys()):
  print k, ':', g[k]
输出:

A : None
B : ['A']
C : ['A', 'B', 'D', 'F']
D : ['C', 'B']
E : None
F : ['E']

为什么C的结果中缺少F?对不起,这是一个输入错误!will Update为什么C的结果中缺少F,而E的结果为“F”?OP指定
'A'
应映射到包含空字符串的列表(
'A':['']
)。您的回答更有意义,因为如果您请求
new\u graph['A']
您会得到一个空列表,这是一个更好的表示无值的表示。我不知道插入空列表是否有意义,因为defaultdict将根据需要创建它们。我刚才已经解决了这个问题。:)您是如何在打印时获得订单的。出于某种原因,我得到了>>>['A','B','E','D','F','M']
>>> from collections import defaultdict
>>> graph = {'A': ['B', 'C'],
...              'B': ['C', 'D'],
...              'C': ['D'],
...              'D': ['C'],
...              'E': ['F'],
...              'F': ['C']}
>>> new_graph = defaultdict(list)
>>> for ele in graph.keys():
...     new_graph[ele] = []
...
>>> for k, v in graph.items():
...     for ele in v:
...             new_graph[ele].append(k)
...
>>> pprint(new_graph)
{'A': [],
 'B': ['A'],
 'C': ['A', 'B', 'D', 'F'],
 'D': ['B', 'C'],
 'E': [],
 'F': ['E']}
graph = {'A': ['B', 'C'],
             'B': ['C', 'D'],
             'C': ['D'],
             'D': ['C'],
             'E': ['F'],
             'F': ['C']}

g = dict.fromkeys(graph.keys())
for k, v in graph.iteritems():
  for x in v:
    if g[x]: g[x] += [k]
    else:    g[x] = [k]

for k in sorted(graph.keys()):
  print k, ':', g[k]
A : None
B : ['A']
C : ['A', 'B', 'D', 'F']
D : ['C', 'B']
E : None
F : ['E']