簡體   English   中英

從嵌套字典中獲取非等於值

[英]Getting non equals values from a nested dictionary

我有一個這樣的嵌套字典

my_dict =  {

'ae15': {'selector1fpc0': {'12': ' 3b1874ee5465656256079d02a301acf5'},
          'selector1fpc1': {'12': ' 3b1874ee5465656256079d02a301acf5'},
          'selector1fpc10': {'12': ' 3b1874ee5465656256079d02a301acf5'},
          'selector1fpc4': {'12': ' 3b1874ee5465656256079d02a301acf5'},
          'selector1fpc5': {'12': ' de80451ee5a9e5d69f243a42f1e72d1f'},
          'selector1fpc7': {'12': ' 3b1874ee5465656256079d02a301acf5'},
          'selector1fpc8': {'12': ' 3b1874ee5465656256079d02a301acf5'},
          'selector1fpc9': {'12': ' 3b1874ee5465656256079d02a301acf5'}},
 'ae16': {'selector1fpc0': {'7': ' 119a58e92e581d90eba9a57262d297e5'},
          'selector1fpc1': {'7': ' 119a58e92e581d90eba9a57262d297e5'},
          'selector1fpc10': {'8': ' 119a58e92e581d90eba9a57262d297e5'},
          'selector1fpc4': {'7': ' 119a58e92e581d90eba9a57262d297e5'},
          'selector1fpc5': {'7': ' 119a58e92e581d90eba9a57262d297e5'},
          'selector1fpc7': {'7': ' 119a58e92e581d90eba9a57262d297e5'},
          'selector1fpc8': {'7': ' 119a58e92e581d90eba9a57262d297e5'},
          'selector1fpc9': {'7': ' 119a58e92e581d90eba9a57262d297e5'}}}

我想檢查字典的所有內部值是否相等

IE

在 ae15 selector1fpc5 中的值與其他值不同,但在 ae16 中所有值都相同

我正在嘗試以下代碼

for k, dic in my_dict.items():
    print(dic.values())
    iterable = iter(dic.values())
    first = next(iterable)
    all_equals = all(first == val for val in iterable for k in dic.keys())
    print(k,all_equals)

但是在這兩種情況下我都得到了 False,而實際上只有 ae195 具有不同的值。

您需要在不同的地方更深地嵌套一層:

from itertools import chain

for k, dic in my_dict.items():
    iterable = chain(*(d.values() for d in dic.values())) # to here  ...
    first = next(iterable)
    all_equals = all(first == val for val in iterable)  # ... from here!
    print(k, all_equals)

ae15 False
ae16 True

暫無
暫無

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

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