🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
8 messages
8 total messages Started by luky007 Tue, 01 Sep 2009 15:06
zagłębianie się w dict (słownik)
#26484
Author: luky007
Date: Tue, 01 Sep 2009 15:06
14 lines
1224 bytes
Witam,
raczkując w pythonie mam problem z dict.

Mam pewien słownik:
dict = {}
dict {"id":"wartosc"}

znając liczbe zagłebień potrzebuje dodać tylko słowników w środku tj.
więdząc że ilość zagłębień to 3 potrzebuje dodać 3 słowniki w środku:
czyli:
dict("id": "wartość", dict2("sub_id":"innawartosc", dict3(sububid: 
zupelniewartość)); -  formatowanie poglądowe.

kompletnie nie mam pojęcia jak iterować wgłąb a nie po długości słownika.
Re: zagłębianie się w dict (słownik)
#26496
Author: Bart Ogryczak
Date: Tue, 01 Sep 2009 16:38
19 lines
2059 bytes
On Sep 1, 5:06 pm, luky007 <lu...@NOSPAMo2.pl> wrote:
> Witam,
> raczkując w pythonie mam problem z dict.
>
> Mam pewien słownik:
> dict = {}
> dict {"id":"wartosc"}
>
> znając liczbe zagłebień potrzebuje dodać tylko słowników w środku tj.
> więdząc że ilość zagłębień to 3 potrzebuje dodać 3 słowniki w środku:
> czyli:
> dict("id": "wartość", dict2("sub_id":"innawartosc", dict3(sububid:
> zupelniewartość)); -  formatowanie poglądowe.
>
> kompletnie nie mam pojęcia jak iterować wgłąb a nie po długości słownika.

slownik = {}
slownik.setdefault('id',{}).setdefault('sub_id',{})['subsubid'] =
'zupelnieinnawartość'
Re: zagłębianie się w dict (słownik)
#26492
Author: luky007
Date: Tue, 01 Sep 2009 17:01
25 lines
1845 bytes
Bart Ogryczak pisze:
> On Sep 1, 5:06 pm, luky007 <lu...@NOSPAMo2.pl> wrote:
>> Witam,
>> raczkując w pythonie mam problem z dict.
>>
>> Mam pewien słownik:
>> dict = {}
>> dict {"id":"wartosc"}
>>
>> znając liczbe zagłebień potrzebuje dodać tylko słowników w środku tj.
>> więdząc że ilość zagłębień to 3 potrzebuje dodać 3 słowniki w środku:
>> czyli:
>> dict("id": "wartość", dict2("sub_id":"innawartosc", dict3(sububid:
>> zupelniewartość)); -  formatowanie poglądowe.
>>
>> kompletnie nie mam pojęcia jak iterować wgłąb a nie po długości słownika.
> 
> slownik = {}
> slownik.setdefault('id',{}).setdefault('sub_id',{})['subsubid'] =
> 'zupelnieinnawartość'
> 

dzięki ale w jaki sposób po tym iterować?
np. chce wstawiać slownik z 'subsubid': 'zupelnieinnawartosc' jesli 
jakiś klucz-wartość np. 'item': '3' na poziomie 'sub_id' istnieje?
Re: zagłębianie się w dict (słownik)
#26495
Author: luky007
Date: Tue, 01 Sep 2009 17:03
31 lines
2069 bytes
luky007 pisze:
> Bart Ogryczak pisze:
>> On Sep 1, 5:06 pm, luky007 <lu...@NOSPAMo2.pl> wrote:
>>> Witam,
>>> raczkując w pythonie mam problem z dict.
>>>
>>> Mam pewien słownik:
>>> dict = {}
>>> dict {"id":"wartosc"}
>>>
>>> znając liczbe zagłebień potrzebuje dodać tylko słowników w środku tj.
>>> więdząc że ilość zagłębień to 3 potrzebuje dodać 3 słowniki w środku:
>>> czyli:
>>> dict("id": "wartość", dict2("sub_id":"innawartosc", dict3(sububid:
>>> zupelniewartość)); -  formatowanie poglądowe.
>>>
>>> kompletnie nie mam pojęcia jak iterować wgłąb a nie po długości 
>>> słownika.
>>
>> slownik = {}
>> slownik.setdefault('id',{}).setdefault('sub_id',{})['subsubid'] =
>> 'zupelnieinnawartość'
>>
> 
> dzięki ale w jaki sposób po tym iterować?
> np. chce wstawiać slownik z 'subsubid': 'zupelnieinnawartosc' jesli 
> jakiś klucz-wartość np. 'item': '3' na poziomie 'sub_id' istnieje?

analogicznie nie wiem w jaki sposób wstawiać setdefualt w zależności od 
liczby zagłebień które wybiore... (gdy chce 4,5,6 zagłebień ... 
potrzebna chyba jakaś pętla...)
Re: zagłębianie się w dict (słownik)
#26500
Author: Radomir Dopieralski
Date: Tue, 01 Sep 2009 17:48
51 lines
2470 bytes
At Tue, 01 Sep 2009 17:06:22 +0200, luky007 wrote:

> Witam,
> raczkując w pythonie mam problem z dict.
>
> Mam pewien słownik:
> dict = {}
> dict {"id":"wartosc"}
>
> znając liczbe zagłebień potrzebuje dodać tylko słowników w środku tj.
> więdząc że ilość zagłębień to 3 potrzebuje dodać 3 słowniki w środku:
> czyli:
> dict("id": "wartość", dict2("sub_id":"innawartosc", dict3(sububid: 
> zupelniewartość)); -  formatowanie poglądowe.
>
> kompletnie nie mam pojęcia jak iterować wgłąb a nie po długości słownika.

Wydaje mi sie, ze zwykly numerek ci tu nie wystarczy -- zeby
zidentyfikowac konkretna wartosc w takim drzewie, mysisz podac
identyfikatory wszystkich galezi. Czyli na przyklad:

tree = {
    'a': 30,
    'b': {
        'a': {
            'a': 10,
            'b': 20,
        },
        'b': 40,
    },
    'c': 50,
}

print tree['a']
30

print tree['b']['a']['a']
10

print tree['b']['b']
20

Owszem, mozesz sobie napisac obiekt ktory bedziesz mogl adresowac tuplami:

tree['a'] = 30; tree['b', 'a', 'a'] = 10

jest to nawet niezle cwiczenie. Ale samo podanie glebokosci nie wystarczy.


-- 
Radomir Dopieralski, http://sheep.art.pl
Re: zagłębianie się w dict (słownik)
#26497
Author: Adam Kochanowski
Date: Wed, 02 Sep 2009 07:00
7 lines
1308 bytes
luky007 pisze:

> analogicznie nie wiem w jaki sposób wstawiać setdefualt w zależności od 
> liczby zagłebień które wybiore... (gdy chce 4,5,6 zagłebień ... 
> potrzebna chyba jakaś pętla...)

Ja bym wyskrobał jakąś sprytną rekurencyjną funkcję.
Re: zagłębianie się w dict (słownik)
#26498
Author: Radomir Dopieralski
Date: Wed, 02 Sep 2009 08:29
24 lines
2065 bytes
At Wed, 02 Sep 2009 09:00:54 +0200, Adam Kochanowski wrote:

> luky007 pisze:
>
>> analogicznie nie wiem w jaki sposób wstawiać setdefualt w zależności od 
>> liczby zagłebień które wybiore... (gdy chce 4,5,6 zagłebień ... 
>> potrzebna chyba jakaś pętla...)
>
> Ja bym wyskrobał jakąś sprytną rekurencyjną funkcję.

Rekurencja w pythonie jest ograniczona, mozna byc niemilo zaskoczonym.
Co zlego w zwyklym forze?

def get_node(tree, path):
    node = tree
    for part in path:
        node = node[part]
    return node

W przypadku nieistniejacej lub niepoprawnej sciezki, rzuci odpowiednim
wyjatkiem.

-- 
Radomir Dopieralski, http://sheep.art.pl
Re: zagłębianie się w dict (słownik)
#26499
Author: William Bonawentura
Date: Wed, 02 Sep 2009 09:41
9 lines
1421 bytes
Użytkownik "luky007" <luky1@NOSPAMo2.pl> napisał w wiadomości 
news:h7jk57$6r9$2@news.onet.pl...

>> np. chce wstawiać slownik z 'subsubid': 'zupelnieinnawartosc' jesli jakiś 
>> klucz-wartość np. 'item': '3' na poziomie 'sub_id' istnieje?
>

Może wystarczy ci jeden słownik tylko stosuj jako klucz tuplę ze ścieżką.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads