Как сделать кортеж из этого списка - Python - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок в Python. У меня есть список -

a=[{'name':'Anurag','assignedTopics':{'concept_id':'KT2345','resources':[{'resource':'www.coob.com','typeform':'www.typeform.com'},{'resource':'www.buj.com','typeform':'www.typeform.com'},{'resource':'www.cademy.com','typeform':'www.typeform.com'},{'resource':'www.zxt.com','typeform':'www.typeform.com'}]}},{'name':'rohit','assignedTopics':{'concept_id':'KT2346','resources':[{'resource':'www.coobo1.com','typeform':'www.typeform.com'},{'resource':'www.buj1.com','typeform':'www.typeform.com'},{'resource':'www.cademy1.com','typeform':'www.typeform.com'},{'resource':'www.zxt1.com','typeform':'www.typeform.com'}]}},{'name':'purohit','assignedTopics':{'concept_id':'KT2347','resources':[{'resource':'www.coobo2.com','typeform':'www.typeform.com'},{'resource':'www.buj2.com','typeform':'www.typeform.com'},{'resource':'www.cademy2.com','typeform':'www.typeform.com'},{'resource':'www.zxt2.com','typeform':'www.typeform.com'}]}}]

Я хочу получить список кортежей, подобный этому -

[
(Anurag,KT2345,www.coob.com),
(Anurag,KT2345,www.buj.com),
(Anurag,KT2345,www.cademy.com),
(Anurag,KT2345,www.zxt.com),
(rohit,KT2346,www.coob1.com),
(rohit,KT2346,www.buj1.com),
(rohit,KT2346,www.cademy1.com),
(rohit,KT2346,www.zxt1.com),
(purohit,KKT2347,www.coob2.com),
(purohit,KT2347,www.buj2.com),
(purohit,KT2347,www.cademy2.com),
(purohit,KT2347,www.zxt2.com)
]

Я пробовал разные вещи, такие как:

for v in a:
   for key,value in v.items():

I я не могу получить его в нужном формате.

Ответы [ 3 ]

0 голосов
/ 06 апреля 2020

Это будет делать:

a=[{'name':'Anurag','assignedTopics':{'concept_id':'KT2345','resources':[{'resource':'www.coob.com','typeform':'www.typeform.com'},{'resource':'www.buj.com','typeform':'www.typeform.com'},{'resource':'www.cademy.com','typeform':'www.typeform.com'},{'resource':'www.zxt.com','typeform':'www.typeform.com'}]}},{'name':'rohit','assignedTopics':{'concept_id':'KT2346','resources':[{'resource':'www.coobo1.com','typeform':'www.typeform.com'},{'resource':'www.buj1.com','typeform':'www.typeform.com'},{'resource':'www.cademy1.com','typeform':'www.typeform.com'},{'resource':'www.zxt1.com','typeform':'www.typeform.com'}]}},{'name':'purohit','assignedTopics':{'concept_id':'KT2347','resources':[{'resource':'www.coobo2.com','typeform':'www.typeform.com'},{'resource':'www.buj2.com','typeform':'www.typeform.com'},{'resource':'www.cademy2.com','typeform':'www.typeform.com'},{'resource':'www.zxt2.com','typeform':'www.typeform.com'}]}}]

result = []
for x in a:
    for y in x['assignedTopics']['resources']:
        result.append((x['name'], x['assignedTopics']['concept_id'], y['resource']))

for x in result:
    print(x)
# ('Anurag', 'KT2345', 'www.coob.com')
# ('Anurag', 'KT2345', 'www.buj.com')
# ('Anurag', 'KT2345', 'www.cademy.com')
# ('Anurag', 'KT2345', 'www.zxt.com')
# ('rohit', 'KT2346', 'www.coobo1.com')
# ('rohit', 'KT2346', 'www.buj1.com')
# ('rohit', 'KT2346', 'www.cademy1.com')
# ('rohit', 'KT2346', 'www.zxt1.com')
# ('purohit', 'KT2347', 'www.coobo2.com')
# ('purohit', 'KT2347', 'www.buj2.com')
# ('purohit', 'KT2347', 'www.cademy2.com')
# ('purohit', 'KT2347', 'www.zxt2.com')

Вам просто нужно отслеживать все контейнеры ввода.

0 голосов
/ 06 апреля 2020

Это должно сработать для вас: при условии, что вывод имеет следующий формат и клавиши:

a=[{'name':'Anurag','assignedTopics':{'concept_id':'KT2345','resources':[{'resource':'www.coob.com','typeform':'www.typeform.com'},{'resource':'www.buj.com','typeform':'www.typeform.com'},{'resource':'www.cademy.com','typeform':'www.typeform.com'},{'resource':'www.zxt.com','typeform':'www.typeform.com'}]}},{'name':'rohit','assignedTopics':{'concept_id':'KT2346','resources':[{'resource':'www.coobo1.com','typeform':'www.typeform.com'},{'resource':'www.buj1.com','typeform':'www.typeform.com'},{'resource':'www.cademy1.com','typeform':'www.typeform.com'},{'resource':'www.zxt1.com','typeform':'www.typeform.com'}]}},{'name':'purohit','assignedTopics':{'concept_id':'KT2347','resources':[{'resource':'www.coobo2.com','typeform':'www.typeform.com'},{'resource':'www.buj2.com','typeform':'www.typeform.com'},{'resource':'www.cademy2.com','typeform':'www.typeform.com'},{'resource':'www.zxt2.com','typeform':'www.typeform.com'}]}}]

list_tuples=[]
for val in a:
    name = val["name"]
    assigned_topic = val["assignedTopics"]["concept_id"]
    res_list = val["assignedTopics"]["resources"]
    for val in res_list:
        list_tuples.append((str(name), str(assigned_topic), str(val["resource"])))

Вывод:

list_tuples
Out[38]: 
[('Anurag', 'KT2345', 'www.coob.com'),
 ('Anurag', 'KT2345', 'www.buj.com'),
 ('Anurag', 'KT2345', 'www.cademy.com'),
 ('Anurag', 'KT2345', 'www.zxt.com'),
 ('rohit', 'KT2346', 'www.coobo1.com'),
 ('rohit', 'KT2346', 'www.buj1.com'),
 ('rohit', 'KT2346', 'www.cademy1.com'),
 ('rohit', 'KT2346', 'www.zxt1.com'),
 ('purohit', 'KT2347', 'www.coobo2.com'),
 ('purohit', 'KT2347', 'www.buj2.com'),
 ('purohit', 'KT2347', 'www.cademy2.com'),
 ('purohit', 'KT2347', 'www.zxt2.com')]
0 голосов
/ 06 апреля 2020

Попробуйте это решение:

result = []

for i in a:
    sub = []
    sub.append(i['name'])
    sub.append(i['assignedTopics']['concept_id'])
    for res in i['assignedTopics']['resources']:
        sub2 = sub.copy()
        sub2.append(res['resource'])
        result.append(tuple(sub2))

print(result)
...