use*_*335 0 python string dictionary python-2.7 python-3.x
我有这个名单: [Frank, Sam, Kevin, Jack]
是否可以使用列表中的名称创建一个字典来创建这样的东西?
'Frank' : {'Sam': 0, 'Kevin': 0, 'Jack': 0},
'Sam' : {'Frank': 0, 'Kevin': 0, 'Jack': 0},
'Kevin' : {'Frank': 0, 'Sam': 0, 'Jack': 0}
'Jack' : {'Frank': 0, 'Sam': 0, 'Kevin': 0}
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以遍历列表,选择第一个名称然后用它创建一个字典,列表中的其他成员作为键,0作为默认值.然后重复列表中的其他元素.
我在考虑使用这样的东西.
my_dynamic_vars = dict()
my_dynamic_vars.update({string: dict()})
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.
您可以使用嵌套字典理解:
>>> lst = ['Frank', 'Sam', 'Kevin', 'Jack']
>>> dct = {x:{y:0 for y in lst if y != x} for x in lst}
>>> dct
{'Frank': {'Kevin': 0, 'Sam': 0, 'Jack': 0}, 'Kevin': {'Frank': 0, 'Jack': 0, 'Sam': 0}, 'Sam': {'Frank': 0, 'Jack': 0, 'Kevin': 0}, 'Jack': {'Frank': 0, 'Kevin': 0, 'Sam': 0}}
>>>
>>> # Just to demonstrate
>>> from pprint import pprint
>>> pprint(dct)
{'Frank': {'Jack': 0, 'Kevin': 0, 'Sam': 0},
'Jack': {'Frank': 0, 'Kevin': 0, 'Sam': 0},
'Kevin': {'Frank': 0, 'Jack': 0, 'Sam': 0},
'Sam': {'Frank': 0, 'Jack': 0, 'Kevin': 0}}
>>>
Run Code Online (Sandbox Code Playgroud)