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


Groups > de.comp.lang.python > #5216

Ein Problem mit Dictionarie, oder das Schlüssel werte problem

From Manfred Gil <manfred-gil@t-online.de>
Newsgroups de.comp.lang.python
Subject Ein Problem mit Dictionarie, oder das Schlüssel werte problem
Date 2018-08-28 12:52 +0200
Organization diese und das
Message-ID <pm39hu$1sc$1@tota-refugium.de> (permalink)

Show all headers | View raw


Hallo Liste,

ich will zur Laufzeit meines Programms ein dict erstellen mit einem 
Schlüssel und zwei werten. Der eine wert soll je nach anforderung
erhöht werden, also als Counter fungieren. Der zweite wert soll
erstmal nicht geändert werden wenn er erstellt wurde.

Ich würde nun den Counter mit der get() Methode erhöhen und da liegt
mein Problem begraben. 

Als kurzes und einfaches beispiel: 


#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# < code >
dict = {'key' : [2, 'hallo']}

print('was enthält das dict ?')
print(dict)

print('\n')
print('Gebe den ersten wert für key aus [0]')
print(dict['key'][0])

print('\n')
print('Gebe den zweiten wert für key aus [1]')
print(dict['key'][1])

print('\n')
print('Erhöhe den ersten wert für key[0] um 1')
dict['key'][0] += 1
print('Gebe den ersten wert für key[0] nach der erhöhung aus')
print(dict['key'][0])

print('\n')
print('Erhöhe den wert nochmals um 1 mit get')

# hier beginnt das Problem mit get

#dict['key'][0] = dict.get('key'[0], dict['key'][0]) + 1 # (1)
dict['key'][0] = dict.get('key'[0]) + 1 # (2)
print(dict['key'][0])

print('\n')
print('und so sieht das dict jetzt aus')
print(dict)

#< code end >

(1) geht weil get() den default Bereich benutzt. Diese sollte aber so
nicht sein.

(2) führt zu einem TypeError: unsupported operand type(s) for +:
'NoneType' and 'int'


ist diese Art mit get() umzugehen falsch oder nicht möglich wenn zwei
werte für einen key da sind? Die alternative die ich fand ist die
Methode has_key(), diese liefert mir jedoch den fehler das dict
has_key() nicht kennt. Gehörte wohl zu Python 2.7

Gruß
Manfred

-- 
Letzte Worte von U. Barschel:
  "Ich gebe mein Ehrenwort."

Back to de.comp.lang.python | Previous | NextNext in thread | Find similar


Thread

Ein Problem mit Dictionarie, oder das Schlüssel werte problem Manfred Gil <manfred-gil@t-online.de> - 2018-08-28 12:52 +0200
  Re: Ein Problem mit Dictionarie, oder das Schlüssel werte problem Manfred Gil <manfred-gil@t-online.de> - 2018-08-28 16:46 +0200
    Re: [Python-de]  Ein Problem mit Dictionarie, oder das Schlüssel werte problem Achim Domma <domma@procoders.net> - 2018-08-28 17:02 +0200
  Re: Ein Problem mit Dictionarie, oder das Schlüssel werte problem Manfred Gil <manfred-gil@t-online.de> - 2018-08-28 17:24 +0200

csiph-web