我想通過從基于相同鍵名的現有字典串列中隨機選擇字典來形成一個新的字典串列。
existing_list = [{'topic1': 'question1'}, {'topic2': 'question2'}, {'topic3': 'question3'}, {'topic2': 'question4'}, {'topic2': 'question5'}, {'topic1': 'question2'}, {'topic1': 'question3'}, {'topic3': 'question5'}, {'topic3': 'question6'}]
新串列應該選擇兩個具有相同鍵名的隨機字典:
new_list = [{'topic1': 'question1'}, {'topic1': 'question3'}, {'topic2': 'question2'}, {'topic2': 'question5'}, {'topic3': 'question5'}, {'topic3': 'question3'}]
采取下面的建議我改變了資料結構:
arrange = {}
for item in questions:
arrange.setdefault(item['parent'], []).append(item['question_link'])
question_lists_of_lists = [random.sample(arrange[topic], 2) for topic in arrange]
question_lists= sum(question_lists_of_lists,[])
現在我正在尋找更好的替代方法來使用以下方法來實作新串列:
new_list = []
for k, v in arrange.items():
for i in range(2):
random_value = random.choice(v)
new_list.append({k: random_value})
arrange[k].remove(random_value)
uj5u.com熱心網友回復:
我很確定這是您正在尋找的代碼:
import random
existing_list = [{'topic1': 'question1'}, {'topic2': 'question2'}, {'topic3': 'question3'}, {'topic2': 'question4'}, {'topic2': 'question5'}, {'topic1': 'question2'}, {'topic1': 'question3'}, {'topic3': 'question5'}, {'topic3': 'question6'}]
new_list = []
d = {} # creating a new dictionary for better storage overview
# adding key-value pairs into the dictionary
for element in existing_list:
for k, v in element.items():
if k in d.keys():
d[k].append(v)
else:
d[k] = [v,]
# randomly choosing values from the dictionary
for k, v in d.items():
for i in range(2):
random_value = random.choice(v)
new_list.append({k: random_value})
d[k].remove(random_value)
print(new_list)
uj5u.com熱心網友回復:
我認為您的主要問題是如何存盤資料。擁有一個具有單個鍵值對的字典串列并不容易使用。
更好的方法可能是將不同的問題存盤在每個主題的串列中,如下所示:
d = {'topic1': [question1, question2, question3], 'topic2': [question1, question2, question3]}
然后你可以像這樣遍歷字典:
for topic, questions in d.items():
q1 = d[topic][random(0, len(questions)].pop()
q2 = d[topic][random(0, len(questions)].pop()
然后您可以將這些問題存盤在某個串列中或根據需要使用它們。
(順便說一句,list.pop() 方法實際上從串列中洗掉了元素,但由于“問題”是回圈中的區域變數,我認為應該沒問題)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530222.html
標籤:Python列表
上一篇:如何根據給定的值串列過濾字典值?
下一篇:在匹配條件后從串列中選擇值
