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