[英]How to Create list of Multiple Combinations using Dict in Python
我正在嘗試在給定數據中形成組合列表
數據 = {“a”:[1,2,3],“b”:[11,12,13],“c”:[31,32,33]}
到目前為止,我可以創建一個組合列表,現在我有點卡在這里。 如何添加列表中的其他項目。
from itertools import combinations
import datetime
data = { "a": [1,2,3], "b":[11,12,13], "c":[31,32,33]}
for key, values in data.items():
result = {}
for iterate in range(len(values)):
result["timegenerated"] = { int(datetime.datetime.now().timestamp()) }
comb = combinations(values,iterate+1)
for i in list(comb):
val_list = list(i)
result[key] = { "in" :val_list }
print(result)
result = {}
實際 Output:
{'datetime': {1569988851}, 'a': {'in': [1]}}
{'datetime': {1569988851}, 'a': {'in': [2]}}
{'datetime': {1569988851}, 'a': {'in': [3]}}
{'datetime': {1569988851}, 'a': {'in': [1, 2]}}
{'datetime': {1569988851}, 'a': {'in': [1, 3]}}
{'datetime': {1569988851}, 'a': {'in': [2, 3]}}
{'datetime': {1569988851}, 'a': {'in': [1, 2, 3]}}
{'datetime': {1569988851}, 'b': {'in': [11]}}
.
.
{'datetime': {1569988851}, 'c': {'in': [32, 33]}}
{'datetime': {1569988851}, 'c': {'in': [31, 32, 33]}}
預期 Output:
實際 Output +
{'datetime': {1569988851}, 'a': {'in': [1]}}
.
.
{'datetime': {1569988851}, 'a': {'in': [1]},'b': {'in': [11]} }
{'datetime': {1569988851}, 'a': {'in': [1]},'b': {'in': [12]} }
{'datetime': {1569988851}, 'a': {'in': [1]},'b': {'in': [13]} }
{'datetime': {1569988851}, 'a': {'in': [1]},'b': {'in': [11,12]} }
.
.
{'datetime': {1569988851}, 'a': {'in': [1,2,3]},'b': {'in': [11,12,13]},'c': {'in': [31,32,33]} }
.
.
{'datetime': {1569988851}, 'b': {'in': [11]} }
{'datetime': {1569988851}, 'b': {'in': [12]} }
.
.
{'datetime': {1569988851}, 'b': {'in': [11]},'c': {'in': [31]} }
{'datetime': {1569988851}, 'b': {'in': [11]},'c': {'in': [31,32]} }
.
.
{'datetime': {1569988851}, 'b': {'in': [11,12,13]},'c': {'in': [31,32,33]} }
.
.
{'datetime': {1569988851}, 'c': {'in': [31]} }
{'datetime': {1569988851}, 'c': {'in': [32]} }
.
.
{'datetime': {1569988851}, 'c': {'in': [31,32]} }
完整填寫組合所需的建議。
結果字典for key, values in data.items():
因此,將結果的初始化移到循環之外。
from itertools import combinations
import datetime
data = { "a": [1,2,3], "b":[11,12,13], "c":[31,32,33]}
result = {}
final = {}
for key, values in data.items():
for iterate in range(len(values)):
result["timegenerated"] = { int(datetime.datetime.now().timestamp()) }
comb = combinations(values,iterate+1)
for i in list(comb):
val_list = list(i)
result[key] = { "in" :val_list }
print(result)
我稍微調整了一下以獲得結果。
parsed_keys = []
for i in range(len(data.keys())):
result = {}
count = 0
for key, values in data.items():
if key not in parsed_keys:
for iterate in range(len(values)):
result["timegenerated"] = { int(datetime.datetime.now().timestamp()) }
comb = combinations(values,iterate+1)
for i in list(comb):
val_list = list(i)
result[key] = { "in" :val_list }
print(result)
if count == 0 and key not in parsed_keys:
parsed_keys.append(key)
count += 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.