Python 如何使用列表操作字典并插入到另一个字典中

Python 如何使用列表操作字典并插入到另一个字典中,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我试图解决这个问题,基本上需要一个字典,table\u one,列表作为它的值,我试图将它转换成另一个字典,table\u two,其中键是来自table\u one的值,但是值必须与table\u one的键匹配 基本上,我想将其转换为: table_one = {'e0': ['v0', 'v1', 'v5'], 'e1': ['v1', 'v3', 'v4', 'v5'], 'e2':['v0', 'v2', 'v5']} 进入这个 table_two = {'v0' : ['e0',

我试图解决这个问题,基本上需要一个字典,
table\u one
,列表作为它的值,我试图将它转换成另一个字典,
table\u two
,其中键是来自
table\u one
的值,但是值必须与
table\u one
的键匹配

基本上,我想将其转换为:

table_one = {'e0': ['v0', 'v1', 'v5'], 'e1': ['v1', 'v3', 'v4', 'v5'], 'e2':['v0', 'v2', 'v5']}
进入这个

table_two = {'v0' : ['e0', 'e2'], 'v1' : ['e0', 'e2'], 'v3':['e1'], 'v4' : ['e1'], 'v5' : ['e0', 'e1', 'e2'] 
到目前为止,我已经提出了以下代码:

table_one = {'e0': ['v0', 'v1', 'v5'], 'e1': ['v1', 'v3', 'v4', 'v5'],
'e2':['v0', 'v2', 'v5']}
table_two = {}

for lists in table_one.values():
    for elements in lists: #iterates through values in each list
        if elements in table_one: #checks whether element belongs to key
             table_two[elements].append(table_one.keys())



print "Elements = ", table_two.items()'

我遇到了一个逻辑错误,完全没有输出。有什么建议吗?

您可以为此使用defaultdict。如果您希望输出是正常的dict,只需在之后更改它

In [1]: from collections import defaultdict

In [2]: table_one = {'e0': ['v0', 'v1', 'v5'], 'e1': ['v1', 'v3', 'v4', 'v5'], 'e2':['v0', 'v2', 'v5']}

In [3]: table_two = defaultdict(list)

In [4]: for key, values in table_one.items():
   ...:     for v in values:
   ...:         table_two[v] += [key]
   ...:
   ...:

In [5]: table_two
Out[5]:
defaultdict(list,
        {'v0': ['e0', 'e2'],
         'v1': ['e0', 'e1'],
         'v5': ['e0', 'e1', 'e2'],
         'v3': ['e1'],
         'v4': ['e1'],
         'v2': ['e2']})

In [6]: table_two = dict(table_two)

In [7]: table_two
Out[7]:
{'v0': ['e0', 'e2'],
 'v1': ['e0', 'e1'],
 'v5': ['e0', 'e1', 'e2'],
 'v3': ['e1'],
 'v4': ['e1'],
 'v2': ['e2']}

您正在搜索表\u one键中的表\u one值。这是个错误。在if语句中,需要使用table_两个键搜索它。