[英]Creating nested dictionaries from a list
很抱歉出現了第三個類似的問題,但我仍在努力解決我的輸出是什么。
理想情況下,我會以編程方式使用函數來獲取值列表並將它們存儲在嵌套字典中。
values = [1,2.0,3.0,1,1,3,4.0,2,3.0, 2.0]
該函數的結果將提供一個如下所示的字典:
types: {
'int' : {
'1': [1,1,1,],
'2': [2],
'3': [3]
}
'float' : {
'2.0' : 2,
'3.0' : 2,
'4.0' : 1
}
}
int 字典只存儲每個值的出現次數,而 float 字典存儲實例的計數。
這就是我所擁有的,但我遇到了創建子詞典的邏輯問題。
values = [1,2.0,3.0,1,1,3,4.0,2,3.0, 2.0]
types = {}
for obj in values:
k = type(obj).__name__
types[k] = types.get(k, {})
if isinstance(obj, int):
types['int'] = obj
elif isinstance(obj, float):
types['float'][obj] = types['float'].get(obj,0)
print(types)
我從一個 for 循環開始嘗試在嘗試之前找出邏輯
def summarize_numbers(list):
return type
函數語法
我想這應該可以幫助您找到所需的解決方案
values = [1,2.0,3.0,1,1,3,4.0,2,3.0, 2.0]
types= {'int':{}, 'float':{}}
for obj in values:
if isinstance(obj, int):
obj = str(obj)
types['int'][obj] = types['int'].get(obj, [])
types['int'][obj].append(int(obj))
elif isinstance(obj, float):
obj = str(obj)
types['float'][obj] = types['float'].get(obj, 0) + 1
print(types)
輸出:
{'int': {'1': [1, 1, 1], '3': [3], '2': [2]}, 'float': {'2.0': 2, '3.0': 2, '4.0': 1}}
盡可能多地使用你的代碼
values = [1,2.0,3.0,1,1,3,4.0,2,3.0, 2.0]
types = {}
for obj in values:
k = type(obj).__name__
types[k] = types.get(k, {})
if isinstance(obj, int):
types[k].setdefault(obj, []).append(obj) # append to default list
elif isinstance(obj, float):
types[k].setdefault(obj, 0) # default int 0
types[k][obj] += 1 # increment
print(types) # {'int': {1: [1, 1, 1], 3: [3], 2: [2]},
'float': {2.0: 2, 3.0: 2, 4.0: 1}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.