Итак, это ситуация: у меня есть 2 списка и вы хотите поместить их в словарь.
Контент ['Это содержимое Sams', 'Это кто-то другой контент']
Автор ['Sam', 'Someone Else']
Это словарь, который я хотел бы создать
Обзоры [{'content': 'Это содержимое Sams', 'author': 'Sam'}, {'content': 'Это кто-то другой контент', 'author': 'Someone Else'}
Надеюсь, ты поймешь, в чем вопрос. Спасибо за помощь.
Вы ищете zip, я верю. Что-то вроде этого:
reviews = [{'content': c, 'author': a} for c, a in zip(contentList, authorList)]
Предполагая, что контент и автор являются массивами, как определено в вопросе, и предполагая, что вы хотите получить один результирующий dict:
d = {}
for i in range(len(Content)):
d[Content[i]] = Author[i]
for i in range(len(x))
в питоне не разрешено, если только вы не манипулируете только индексами. -1
content = ['This is Sams Content', 'This is someone\ else content']
author = ['Sam', 'Someone Else']
reviews = []
for i in range(len(author)):
d = {
'content': content[i],
'author': author[i]
}
reviews.append(d)
for r in reviews:
print "Author: %s, content: %s" % (r['author'], r['content'])
EDIT для тех, кто жаловался, что range(len(...))
недостаточно Pythonic (к которому я говорю просто "серьезно?" ), здесь же решение с использованием enumerate()
, как было предложено:
content = ['This is Sams Content', 'This is someone\ else content']
author = ['Sam', 'Someone Else']
reviews = []
for i, elem in enumerate(author):
d = {
'content': content[i],
'author': elem,
}
reviews.append(d)
for r in reviews:
print "Author: %s, content: %s" % (r['author'], r['content'])
Лично я предпочитаю решение range(len(...))
по сравнению с enumerate
, потому что доступ к обоим массивам в том же стиле при создании хэша помогает читаемости. zip
по-прежнему остается самым изящным решением.
reviews = []
authors = ['sam', 'dave']
content = ['content by sam', 'content by dave']
for a, c in zip(authors, content):
reviews.append({'content':c, 'author':a})
print reviews