如何用python中的字典列表制作元组?

How to make tuple with list of dictionary inpython?

我有一个字典列表,我想从标签值中生成元组,这样数组中的标签就会成对放置。 我该怎么做:

output: [
        {
          "title": "subject1",
          "tags": ['a','b'],
 },
        {
          "title": "subject2",
          "tags": ['c','d','f'],
 }]

我想要的:

[(a,b),(c,d),(c,f),(d,f)]

您可以使用 itertools.combinations(... , 2) and itertools.chain 并获得您想要的,如下所示:

>>> import itertools

>>> results = [{"title": "subject1","tags": ['a','b'],},{"title": "subject2","tags": ['c','d','f'],}]

>>> lst = [list(itertools.combinations(res['tags'] , 2)) for res in results]
>>> lst
[[('a', 'b')], [('c', 'd'), ('c', 'f'), ('d', 'f')]]

>>> list(itertools.chain.from_iterable(lst))
[('a', 'b'), ('c', 'd'), ('c', 'f'), ('d', 'f')]

或不带链:

>>> import itertools
>>> results = [{"title": "subject1","tags": ['a','b'],},{"title": "subject2","tags": ['c','d','f'],}]
>>> out = []
>>> for res in results:
...    out += list(itertools.combinations(res['tags'] , 2))
>>> out
[('a', 'b'), ('c', 'd'), ('c', 'f'), ('d', 'f')]

# for more explanation
[1,2]+[3,4]
[1,2,3,4]

可以使用itertools.combinations()获取。以下将起作用

from itertools import combinations

L1 = [{"title": "subject1", "tags": ['a','b']},
      {"title": "subject2", "tags": ['c','d','f']}]

res = []

for i in L1:
    tags = combinations(i["tags"], 2)
    res += list(tags)

print(res)