簡體   English   中英

檢查字典列表中的值是否在沒有鍵的情況下是唯一的

[英]Check if Values from List of Dictionaries are Unique Without Keys

我有一本像下面這樣的字典:

d = {
    "00068693": [
        {"LABP": "022012"},
        {"LAOS": "022012"},
        {"LAOS": "022012"},
        {"LAOS": "022012"},
        {"LAOS": "022012"},
        {"LAOS": "022012"},
        {"LABC": "022012"},
        {"LACL": "022012"},
        {"LACL": "022012"},
        {"LACL": "022012"},
        {"LACL": "349309"},
    ],
    "00084737": [
        {"LABP": "022012"},
        {"LAOS": "022012"},
        {"LABC": "022012"},
        {"LACL": "022012"},
    ]
}

我的代碼的目標是檢查一個 ID(例如: "00068693" "022012" "LAOS"

所以這個例子的 output 應該是:

ID: "00068693" has different codes.
ID: "00084737" has a unique code.

但是,我該如何檢查呢?

因為不知道這個ID有哪些文件,所以無法通過list的每個key進行訪問。

我不是想比較元素,只是比較每個字典的值,但它們中的每一個都在不同的列表索引上,我不知道鍵。

您可以檢查列表中的所有元素是否相同 問題是哪個列表? 那么,您需要構建所有文件的代碼列表。 我們並不關心文件是什么,只關心它們的代碼:

for ID, files_list in d.items():
    codes = [list(file_dict.values())[0] for file_dict in files_list]
    print(codes)
    print(f"The codes for ID {ID} are all equal? {all_equal(codes)}")

使用您的示例字典,結果如下:

['022012', '022012', '022012', '022012', '022012', '022012', '022012', '022012', '022012', '022012', '349309']
The codes for ID 00068693 are all equal? False
['022012', '022012', '022012', '022012']
The codes for ID 00084737 are all equal? True

* 上面的all_equal是接受的重復答案中的任何選項

假設您的字典名為file_codes ,這就是您獲得結果的方式:

for k, v in file_codes.items():
    if len(set([i[j] for i in v for j in i])) != 1:
            print(f"IDS: {k} has different codes")

暫無
暫無

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

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