簡體   English   中英

從列表創建嵌套字典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM