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_两个键搜索它。