Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #105395

Re: Convert list to another form but providing same information

Path csiph.com!news.swapon.de!fu-berlin.de!uni-berlin.de!not-for-mail
From Peter Otten <__peter__@web.de>
Newsgroups comp.lang.python
Subject Re: Convert list to another form but providing same information
Date Mon, 21 Mar 2016 20:22:12 +0100
Organization None
Lines 66
Message-ID <mailman.458.1458588144.12893.python-list@python.org> (permalink)
References <1010f2cb-21f9-495b-8af4-03ad209b4c1e@googlegroups.com>
Mime-Version 1.0
Content-Type text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding 7Bit
X-Trace news.uni-berlin.de BpqnzygIl+/ba8RnIaXIZwSTwOymGnL5rzeQHgbS60TQ==
Return-Path <python-python-list@m.gmane.org>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.000
X-Spam-Evidence '*H*': 1.00; '*S*': 0.00; 'skip:[ 20': 0.03; 'modify': 0.04; 'resulting': 0.04; '[0]': 0.07; 'rewrite': 0.07; 'subject:form': 0.07; 'collections': 0.09; 'mutable': 0.09; 'occurrences': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'skip:[ 30': 0.09; 'subject:same': 0.09; 'index': 0.13; '(meaning': 0.16; '...]': 0.16; 'immutable,': 0.16; 'received:80.91.229.3': 0.16; 'received:dip0.t-ipconnect.de': 0.16; 'received:io': 0.16; 'received:plane.gmane.org': 0.16; 'received:psf.io': 0.16; 'received:t-ipconnect.de': 0.16; 'subject:Convert': 0.16; 'wrote:': 0.16; 'basically': 0.18; 'element': 0.18; 'fix': 0.21; 'keys': 0.22; 'seems': 0.23; 'elements': 0.23; 'second': 0.24; 'import': 0.24; 'header:User-Agent:1': 0.26; 'subject:list': 0.26; 'header:X-Complaints-To:1': 0.26; 'values': 0.28; 'interface': 0.29; 'be:': 0.29; 'behaviour': 0.29; 'key,': 0.29; 'convert': 0.29; "i'm": 0.30; 'work.': 0.30; 'skip:[ 10': 0.31; 'certain': 0.31; 'problem': 0.33; 'similar': 0.33; 'skip:d 20': 0.34; 'list': 0.34; 'could': 0.35; 'replace': 0.35; 'item': 0.35; 'should': 0.36; 'instead': 0.36; 'to:addr:python-list': 0.36; 'subject:: ': 0.37; 'received:org': 0.37; 'list.': 0.37; 'someone': 0.38; 'does': 0.39; 'to:addr:python.org': 0.40; 'received:de': 0.40; 'hello,': 0.40; 'hope': 0.61; 'skip:n 10': 0.62; 'times': 0.63; 'therefore': 0.67; 'day': 0.67; 'clearer': 0.84; 'dict.': 0.84; 'dealt': 0.91; 'lists:': 0.91
X-Injected-Via-Gmane http://gmane.org/
X-Gmane-NNTP-Posting-Host p57bd8f8e.dip0.t-ipconnect.de
User-Agent KNode/4.13.3
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.21
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Xref csiph.com comp.lang.python:105395

Show key headers only | View raw


Maurice wrote:

> Hello, hope everything is okay. I think someone might have dealt with a
> similar issue I'm having.
> 
> Basically I wanna do the following:
> 
> I have a list such [6,19,19,21,21,21] (FYI this is the item of a certain
> key in the dictionary)
> 
> And I need to convert it to a list of 32 elements (meaning days of the
> month however first element ie index 0 or day zero has no meaning -
> keeping like that for simplicity's sake). Therefore the resulting list
> should be:
> [0,0,0,0,0,0,1,0,0,0...,2,0,3,0...0]
> 
> So the list index should tell how many occurrences of a certain day in the
> original list.
> 
> My attempt:
> 
> weirdList = [[0]*32]*len(dict_days) #list's length should be how many keys
> in the dict.

Rewrite the above as

inner = [0] * 32
weirdList = [inner] * len(dict_days)

Now it should be clearer that weirdList is

[inner, inner, inner, ...]

i. e. len(dict_days) times the same list of 32 zeros. When you modify 
weirdList[0] you also modify weirdList[1] etc. because these are the 
actually the same list.

For the inner list this is not a problem because 0 is immutable, so you can 
only replace it. If the inner list contained a mutable object you'd see the 
same "weird" behaviour you see for the outer list.

The fix is to use multiple inner lists:

not_so_weirdList = [[0]*32 for _ in range(len(dict_days))]

> counter = 0
> k = 0
> for key in dict_days.keys():
>     for i in range(1,32):
>         if i in dict_days[key]:
>             counter = dict_days[key].count(i)
>             weirdList[k][i] = counter
>     dict_days[key] = weirdList[k]
>     k+=1
> 
> However it does not work. weirdList seems to be always the same?

Instead of the list you could use a counter and get basically the same 
interface as long as you ensure that the second index satisfies 0<=index<32:

import collections

for key, values in dict_days.items():
    dict_days[key] = collections.Counter(values)

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Convert list to another form but providing same information Maurice <mauricioliveiraguarda@gmail.com> - 2016-03-21 11:26 -0700
  Re: Convert list to another form but providing same information Maurice <mauricioliveiraguarda@gmail.com> - 2016-03-21 11:30 -0700
    Re: Convert list to another form but providing same information Mark Lawrence <breamoreboy@yahoo.co.uk> - 2016-03-21 19:24 +0000
    Re: Convert list to another form but providing same information anantguptadbl@gmail.com - 2016-03-22 07:23 -0700
  Re: Convert list to another form but providing same information Mark Lawrence <breamoreboy@yahoo.co.uk> - 2016-03-21 19:21 +0000
  Re: Convert list to another form but providing same information Peter Otten <__peter__@web.de> - 2016-03-21 20:22 +0100
  Re: Convert list to another form but providing same information Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-03-21 20:03 +0000
    Re: Convert list to another form but providing same information Ian Kelly <ian.g.kelly@gmail.com> - 2016-03-21 14:12 -0600
      Re: Convert list to another form but providing same information Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-03-22 00:31 +0000
        Re: Convert list to another form but providing same information Chris Angelico <rosuav@gmail.com> - 2016-03-22 11:58 +1100
        Re: Convert list to another form but providing same information Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2016-03-22 15:34 +1100
    Re: Convert list to another form but providing same information Ian Kelly <ian.g.kelly@gmail.com> - 2016-03-21 14:14 -0600
  Re: Convert list to another form but providing same information Steven D'Aprano <steve@pearwood.info> - 2016-03-22 11:13 +1100
  Re: Convert list to another form but providing same information Paul Rubin <no.email@nospam.invalid> - 2016-03-21 18:35 -0700
    Re: Convert list to another form but providing same information Steven D'Aprano <steve@pearwood.info> - 2016-03-22 21:49 +1100

csiph-web