Python | Entfernen Sie doppelte Wörterbücher aus dem verschachtelten Wörterbuch
Bei einem verschachtelten Wörterbuch besteht die Aufgabe darin, doppelte Wörterbücher aus dem Wörterbuch zu entfernen. Im Folgenden sind einige Methoden aufgeführt, um die angegebene Aufgabe abzuschließen.
Methode 1: Verwenden der naiven Methode
ini_dict
=
{
'a'
:{
'b'
:
1
,
'c'
:
2
},
'b'
:{
'b'
:
1
,
'c'
:
2
},
'c'
:{
'a'
:
2
,
'b'
:
3
},
'd'
:{
'a'
:
2
,
'b'
:
7
}}
(
"initial dictionary"
,
str
(ini_dict))
result
=
{}
for
key, value
in
ini_dict.items():
if
value
not
in
result.values():
result[key]
=
value
(
"result"
,
str
(result))
Ausgabe:
Anfangswörterbuch {'c': {'a': 2, 'b': 3}, 'd': {'a': 2, 'b': 7}, 'a': {'c': 2, 'b': 1}, 'b': {'c': 2, 'b': 1}}
Ergebnis {'c': {'a': 2, 'b': 3}, 'd': { 'a': 2, 'b': 7}, 'a': {'c': 2, 'b': 1}}
Methode 2: Verwenden von sortiert und gesetzt
ini_dict
=
{
'a'
:{
'b'
:
1
,
'c'
:
2
},
'b'
:{
'b'
:
1
,
'c'
:
2
},
'c'
:{
'a'
:
2
,
'b'
:
3
},
'd'
:{
'a'
:
2
,
'b'
:
7
}}
(
"initial dictionary"
,
str
(ini_dict))
keep
=
set
({
repr
(
sorted
(value.items())):key
for
key, value
in
ini_dict.items()}.values())
for
key
in
list
(ini_dict):
if
key
not
in
keep:
del
ini_dict[key]
(
"result"
,
str
(ini_dict))
Ausgabe:
Anfangswörterbuch {'a': {'b': 1, 'c': 2}, 'b': {'b': 1, 'c': 2}, 'c': {'a': 2, 'b': 3}, 'd': {'a': 2, 'b': 7}}
Ergebnis {'b': {'b': 1, 'c': 2}, 'c': { 'a': 2, 'b': 3}, 'd': {'a': 2, 'b': 7}}