簡體   English   中英

如何使用 python 將列表的一些值放入字典中?

[英]How to put some of the values of a list inside a dictionary, using python?

我有一個要發送到字典的列表(請參閱 LIST)。

但我不想發送所有數據。 只是一些值(見一些值/特征)碰巧重復了很多次。 例如,“型號:xxx”這個詞出現了 7 次。 “xxx”是 model 的名稱,它會改變。

到目前為止,我只能將列表的最后一個值放入字典中。 如何將列表中的所有值放入字典中?

一些價值觀:

標簽: xxxx

Model:xxxx

圖片:xxxx

推斷:xxxx

分數:xxx

TPU_temp(°C): xxxx

Time(ms): xxx ---有2個,我不知道是否可以只提取第二個。 但如果沒有,也沒問題。 提取兩者都可以。-

這是代碼 - 嘗試 1

#this is to match tha values/features that I want to extract
regex = re.compile(r'(\w+)\((.+)\):\s(.*)|(\w+:)\s(.*)')
match_regex = list(filter(regex.match, output))
match = [line.rstrip('\n') for line in match_regex]

features_wanted='ModelImageTime(ms)InferenceScoreTPU_temp(°C)'


#Removing whitespaces and splitting data into "key:value"
#Sending the values/features into a dictionary
dct={i.replace(' ','').split(':')[0]:i.replace(' ','').split(':')[1] for i in match if i.replace(' ','').split(':')[0] in features_wanted}
print(dct, '\n')

這是我通過代碼獲得的字典 - 嘗試 1

僅顯示列表的最后一個值。

在此處輸入圖像描述

這是代碼 - 嘗試 2

regex = re.compile(r'(\w+)\((.+)\):\s(.*)|(\w+:)\s(.*)')
match_regex = list(filter(regex.match, data))
match = [line.rstrip('\n') for line in match_regex]

dixie=dict(list(enumerate(match)))

這是我通過代碼獲得的字典 - 嘗試 2

在這里,我將所有列表發送到字典中。 但我沒有刪除空格,也沒有將數據分成“鍵:值” 在此處輸入圖像描述

LIST(原始列表如下所示)

在此處輸入圖像描述

這是列表(所以你可以測試)

[
    "labels: imagenet_labels.txt ",
    "Model: efficientnet-edgetpu-S_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 23.1",
    "Time(ms): 5.7",
    "Inference: corkscrew, bottle screw",
    "Score: 0.03125 ",
    "TPU_temp(°C): 57.05",
    "labels: imagenet_labels.txt ",
    "Model: efficientnet-edgetpu-M_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 29.3",
    "Time(ms): 10.8",
    "Inference: dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk",
    "Score: 0.09375 ",
    "TPU_temp(°C): 56.8",
    "labels: imagenet_labels.txt ",
    "Model: efficientnet-edgetpu-L_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 45.6",
    "Time(ms): 31.0",
    "Inference: pick, plectrum, plectron",
    "Score: 0.09766 ",
    "TPU_temp(°C): 57.55",
    "labels: imagenet_labels.txt ",
    "Model: inception_v3_299_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 68.8",
    "Time(ms): 51.3",
    "Inference: ringlet, ringlet butterfly",
    "Score: 0.48047 ",
    "TPU_temp(°C): 57.3",
    "labels: imagenet_labels.txt ",
    "Model: inception_v4_299_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 121.8",
    "Time(ms): 101.2",
    "Inference: admiral",
    "Score: 0.59375 ",
    "TPU_temp(°C): 57.05",
    "labels: imagenet_labels.txt ",
    "Model: inception_v2_224_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 34.3",
    "Time(ms): 16.6",
    "Inference: lycaenid, lycaenid butterfly",
    "Score: 0.41406 ",
    "TPU_temp(°C): 57.3",
    "labels: imagenet_labels.txt ",
    "Model: mobilenet_v2_1.0_224_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 14.4",
    "Time(ms): 3.3",
    "Inference: leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea",
    "Score: 0.36328 ",
    "TPU_temp(°C): 57.3",
    "labels: imagenet_labels.txt ",
    "Model: mobilenet_v1_1.0_224_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 14.5",
    "Time(ms): 3.0",
    "Inference: bow tie, bow-tie, bowtie",
    "Score: 0.33984 ",
    "TPU_temp(°C): 57.3",
    "labels: imagenet_labels.txt ",
    "Model: inception_v1_224_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 21.2",
    "Time(ms): 3.6",
    "Inference: pick, plectrum, plectron",
    "Score: 0.17578 ",
    "TPU_temp(°C): 57.3",
]

如果我正確理解了您的問題(理解您真正要查找的內容有點困難),此代碼將很樂意將所有數據放入 dict-of-lists 中:

from pprint import pprint
from collections import defaultdict

lines = [
    "labels: imagenet_labels.txt ",
    "Model: efficientnet-edgetpu-S_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 23.1",
    "Time(ms): 5.7",
    "Inference: corkscrew, bottle screw",
    "Score: 0.03125 ",
    "TPU_temp(°C): 57.05",
    "labels: imagenet_labels.txt ",
    "Model: efficientnet-edgetpu-M_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 29.3",
    "Time(ms): 10.8",
    "Inference: dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk",
    "Score: 0.09375 ",
    "TPU_temp(°C): 56.8",
    "labels: imagenet_labels.txt ",
    "Model: efficientnet-edgetpu-L_quant_edgetpu.tflite ",
    "Image: insect.jpg ",
    "Time(ms): 45.6",
    "Time(ms): 31.0",
    "Inference: pick, plectrum, plectron",
    "Score: 0.09766 ",
]

values = defaultdict(list)

for line in lines:
    key, value = line.split(": ", 1)
    values[key].append(value)

pprint(dict(values))

打印出來

{'Image': ['insect.jpg ', 'insect.jpg ', 'insect.jpg '],
 'Inference': ['corkscrew, bottle screw',
               "dragonfly, darning needle, devil's darning needle, sewing "
               'needle, snake feeder, snake doctor, mosquito hawk, skeeter '
               'hawk',
               'pick, plectrum, plectron'],
 'Model': ['efficientnet-edgetpu-S_quant_edgetpu.tflite ',
           'efficientnet-edgetpu-M_quant_edgetpu.tflite ',
           'efficientnet-edgetpu-L_quant_edgetpu.tflite '],
 'Score': ['0.03125 ', '0.09375 ', '0.09766 '],
 'TPU_temp(°C)': ['57.05', '56.8'],
 'Time(ms)': ['23.1', '5.7', '29.3', '10.8', '45.6', '31.0'],
 'labels': ['imagenet_labels.txt ',
            'imagenet_labels.txt ',
            'imagenet_labels.txt ']}

但是,如果行的順序很重要(例如,每個“標簽:”開始一個新組),您可能想要類似的東西

# Initialize our list of groups; add in an empty group
# to make the future code easier.
groups = [{}]

for line in lines:
    # Split each line in 2 parts (1 split) on `: `
    key, value = line.split(": ", 1)
    if key == "labels":  # If the key is labels, it starts a new group.
        if groups[-1]:  # If there is something in the current (last) group,
            groups.append({})  # ... add a new one.
    # No matter what, add the key-value pair to the last group.
    groups[-1][key] = value

pprint(groups)

至 output

[{'Image': 'insect.jpg ',
  'Inference': 'corkscrew, bottle screw',
  'Model': 'efficientnet-edgetpu-S_quant_edgetpu.tflite ',
  'Score': '0.03125 ',
  'TPU_temp(°C)': '57.05',
  'Time(ms)': '5.7',
  'labels': 'imagenet_labels.txt '},
 {'Image': 'insect.jpg ',
  'Inference': "dragonfly, darning needle, devil's darning needle, sewing "
               'needle, snake feeder, snake doctor, mosquito hawk, skeeter '
               'hawk',
  'Model': 'efficientnet-edgetpu-M_quant_edgetpu.tflite ',
  'Score': '0.09375 ',
  'TPU_temp(°C)': '56.8',
  'Time(ms)': '10.8',
  'labels': 'imagenet_labels.txt '},
 {'Image': 'insect.jpg ',
  'Inference': 'pick, plectrum, plectron',
  'Model': 'efficientnet-edgetpu-L_quant_edgetpu.tflite ',
  'Score': '0.09766 ',
  'Time(ms)': '31.0',
  'labels': 'imagenet_labels.txt '}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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