如何用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)
我有一个字典列表,我想从标签值中生成元组,这样数组中的标签就会成对放置。 我该怎么做:
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)