使用字典理解转换 Python 字典
Converting Python dictionary using dictionary comprehension
我有以下 Python 词典:
{
"cat": 1,
"dog": 1,
"person": 2,
"bear": 2,
"bird": 3
}
我想使用字典理解将其转换为以下字典:
{
1 : ["cat", "dog"],
2 : ["person", "bear"],
3 : ["bird"]
}
我怎样才能在一个班轮上做到这一点?
这不是高效的,因为这不是字典的用途,但您可以执行以下操作
d = {"cat": 1, "dog": 1, "person": 2, "bear": 2, "bird": 3}
new = {v: [i[0] for i in d.items() if i[1] == v] for v in d.values()}
您可以将 itertools.groupby
与单行一起使用:
import itertools
d = {'person': 2, 'bird': 3, 'dog': 1, 'bear': 2, 'cat': 1}
new_d = {a:[i for i, _ in b] for a, b in itertools.groupby(sorted(d.items(), key=lambda x:x[-1]), key=lambda x:x[-1])}
输出:
{1: ['cat', 'dog'], 2: ['person', 'bear'], 3: ['bird']}
>>> a = {
... "cat": 1,
... "dog": 1,
... "person": 2,
... "bear": 2,
... "bird": 3
... }
>>>
>>> b = {}
>>> for key, value in a.items():
... if value not in b:
... b[value] = [key]
... else:
... b[value].append(key)
...
>>> print(b)
{1: ['cat', 'dog'], 2: ['person', 'bear'], 3: ['bird']}
我有以下 Python 词典:
{
"cat": 1,
"dog": 1,
"person": 2,
"bear": 2,
"bird": 3
}
我想使用字典理解将其转换为以下字典:
{
1 : ["cat", "dog"],
2 : ["person", "bear"],
3 : ["bird"]
}
我怎样才能在一个班轮上做到这一点?
这不是高效的,因为这不是字典的用途,但您可以执行以下操作
d = {"cat": 1, "dog": 1, "person": 2, "bear": 2, "bird": 3}
new = {v: [i[0] for i in d.items() if i[1] == v] for v in d.values()}
您可以将 itertools.groupby
与单行一起使用:
import itertools
d = {'person': 2, 'bird': 3, 'dog': 1, 'bear': 2, 'cat': 1}
new_d = {a:[i for i, _ in b] for a, b in itertools.groupby(sorted(d.items(), key=lambda x:x[-1]), key=lambda x:x[-1])}
输出:
{1: ['cat', 'dog'], 2: ['person', 'bear'], 3: ['bird']}
>>> a = {
... "cat": 1,
... "dog": 1,
... "person": 2,
... "bear": 2,
... "bird": 3
... }
>>>
>>> b = {}
>>> for key, value in a.items():
... if value not in b:
... b[value] = [key]
... else:
... b[value].append(key)
...
>>> print(b)
{1: ['cat', 'dog'], 2: ['person', 'bear'], 3: ['bird']}