簡體   English   中英

將相似的列表元素分組到 dict 中,而不將其多次出現

[英]Group similar list elements into dict without grouping it's multiple occurence

我有一個巨大的列表,我將它轉換為一個字典(基於第一個列表元素),以便使用鍵進行快速搜索。

列表:

[0100,A,1.00,1]
.
.
[0450,A,1.00,1]
[0470,B,1.00,1]
[0480,A,1.00,1]
[0490,A,1.00,1]
[0500,A,1.00,1] #list-1 for below ref
[0510,B,1.00,1]
[0520,A,1.00,1]
[0530,A,1.00,1]
[0500,A,1.00,1] #list-2 for below ref
[0510,B,1.00,1]
[0520,X,1.00,1] #........

轉換為 Dic:

for key, *vals in bytes_data: #Probably need a diff approach here itself instead appending
    data_dict.setdefault(key, []).append(vals) 

字典看起來像

{
    '0450': [[A,1.00,1]],
    '0470': [[B,1.00,1]],
    '0480': [[A,1.00,1]], #......
}

現在,我當前的場景需要根據情況對 4xx/5xx/... 等數據進行分塊。 為此,我使用..

key_series = ["0" + str(x) for x in range(500, 600, 10)]
article_data = {
    key: data_dict[key] for key in set(key_series) & set(data_dict)
}

問題是,對於像 5xx 這樣的某些系列,會出現多次。 在這種情況下,我的 dict 被分組為

{
    0500: [list-1,list-2,..],
    0510: [list-1,list-2,..]
}

但是,我需要類似的東西

{
0500-1: {0500: [list-1], 0510: [list-1],....}, 
0500-2: {0500: [list-2], 0510: [list-2],....},
}

有什么技巧可以做到這一點? 謝謝。

不確定,如果這是您想要的,請告訴我這是否解決了您的問題

from collections import defaultdict
data_dict = {
    "0500": [["A",1.00,1]],
    "0510": [["A",1.00,1], ["B",1.00,1], ["B",1.00,1]],
    "0520": [["A",1.00,1], ["D",1.00,1]]
}
key_series = ["0" + str(x) for x in range(500, 600, 10)]
article_data = {
    key: data_dict[key] for key in set(key_series) & set(data_dict)
}
res = defaultdict(dict)
for k ,v in data_dict.items():
    for i, d in enumerate(v):
        # for now 0500 is hardcoded, which can be made dynamic as per requirement
        res[f"0500-{i+1}"][k] = d

print(res)

暫無
暫無

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

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