在 Python 2.7 中,假设我有一个包含 2 个成员集的列表,如下所示
d = [(1, 'value1'), (2, 'value2'), (3, 'value3')]
python中将它变成这样的字典的最简单方法是什么:
d = {1 : 'value1', 2 : 'value2', 3 : 'value3'}
或者,相反,像这样?
d = {'value1' : 1, 'value2': 2, 'value3' : 3}
谢谢
在 Python 2.7 中,假设我有一个包含 2 个成员集的列表,如下所示
d = [(1, 'value1'), (2, 'value2'), (3, 'value3')]
python中将它变成这样的字典的最简单方法是什么:
d = {1 : 'value1', 2 : 'value2', 3 : 'value3'}
或者,相反,像这样?
d = {'value1' : 1, 'value2': 2, 'value3' : 3}
谢谢
构造dict
函数可以采用序列。所以...
dict([(1, 'value1'), (2, 'value2'), (3, 'value3')])
反过来最好用字典理解来完成
{k: v for v,k in [(1, 'value1'), (2, 'value2'), (3, 'value3')]}
如果您的列表是元组列表的形式,那么您可以简单地使用dict()
.
In [5]: dict([(1, 'value1'), (2, 'value2'), (3, 'value3')])
Out[5]: {1: 'value1', 2: 'value2', 3: 'value3'}
字典推导可用于构造反向字典:
In [13]: { v : k for (k,v) in [(1, 'value1'), (2, 'value2'), (3, 'value3')] }
Out[13]: {'value1': 1, 'value2': 2, 'value3': 3}
>>> lis = [(1, 'value1'), (2, 'value2'), (3, 'value3')]
用于dict()
第一个:
>>> dict(lis)
{1: 'value1', 2: 'value2', 3: 'value3'}
以及对第二个的 dict 理解:
>>> {v:k for k,v in lis}
{'value3': 3, 'value2': 2, 'value1': 1}
dict()
将一个可迭代对象转换为一个字典:
>>> print dict.__doc__
dict() -> new empty dictionary
dict(mapping) -> new dictionary initialized from a mapping object's
(key, value) pairs
dict(iterable) -> new dictionary initialized as if via:
d = {}
for k, v in iterable:
d[k] = v
dict(**kwargs) -> new dictionary initialized with the name=value pairs
in the keyword argument list. For example: dict(one=1, two=2)
lst = [(1, 'value1'), (2, 'value2'), (3, 'value3')]
要将其转换为 dict,只需执行
dict(lst)
扭转它,你可以做
dict((b,a) for a,b in lst)
dict(my_list)
应该可以解决问题。另外,我认为您有一个tuples列表,而不是集合。
>>> d = [(1, 'value1'), (2, 'value2'), (3, 'value3')]
>>> dict(d)
{1: 'value1', 2: 'value2', 3: 'value3'}
>>> dict(map(reversed, d))
{'value3': 3, 'value2': 2, 'value1': 1}