Hi,
does anyone know how one can test if, e.g., a dictionary 'name' has a
key called 'name_key'?
This would be possible:
keys_of_names = names.keys()
L = len(keys_of_names)
for i in range(L):
if keys_of_names[i] == name_key:
print 'found'
But certainly not efficient. I would expect there is something like:
name.is_key(name_key)
I appreciate your help!
Frank 11 173266
Frank wrote:
Hi,
does anyone know how one can test if, e.g., a dictionary 'name' has a
key called 'name_key'?
name_key in name
e.g.
>>name={"john": 42} "john" in name
True
>>"julie" in name
False
--Irmen
Yes, you have name.has_key(name_key) and perhaps better, the in
operator:
if name_key in name:
do something
Sure, you can use "if key in dict" to test for membership:
Python 2.3.5 (#1, Jan 13 2006, 20:13:11)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>exampledict = {"a" : 1, "b" : 2} "a" in exampledict
True
>>"q" in exampledict
False
>>>
Alternatively, "exampledict.has_key("a")" is also valid.
See: http://docs.python.org/tut/node7.htm...00000000000000
-Jeff
On 10 Mar 2007 13:17:11 -0800, Frank <su******@gmail.comwrote:
Hi,
does anyone know how one can test if, e.g., a dictionary 'name' has a
key called 'name_key'?
This would be possible:
keys_of_names = names.keys()
L = len(keys_of_names)
for i in range(L):
if keys_of_names[i] == name_key:
print 'found'
But certainly not efficient. I would expect there is something like:
name.is_key(name_key)
I appreciate your help!
Frank
-- http://mail.python.org/mailman/listinfo/python-list
Frank wrote:
does anyone know how one can test if, e.g., a dictionary 'name'
has a key called 'name_key'?
Yes. It's already posted; next time have a look at the concise
library reference: http://docs.python.org/lib/typesmapping.html
This would be possible:
keys_of_names = names.keys()
L = len(keys_of_names)
for i in range(L):
if keys_of_names[i] == name_key:
print 'found'
Coming in from Java? 8)
Iterating through something using len(X) is quite rare in Python.
If we had no simple "key in dict" test, I'd write the above as:
for key in names.keys():
if key == name_key:
print "found"
break
else:
print "not found"
(It would even suffice to write "for key in names".)
Regards,
Björn
--
BOFH excuse #331:
those damn raccoons!
On Mar 10, 3:17?pm, "Frank" <super...@gmail.comwrote:
Hi,
does anyone know how one can test if, e.g., a dictionary 'name' has a
key called 'name_key'?
This would be possible:
keys_of_names = names.keys()
L = len(keys_of_names)
for i in range(L):
if keys_of_names[i] == name_key:
print 'found'
But certainly not efficient. I would expect there is something like:
name.is_key(name_key)
I appreciate your help!
I often build histograms using dictionaries.
if hist.has_key(outcome):
hist[outcome] += 1 # if key already exists, increment
else:
hist[outcome] = 1 # else create a new key
>
Frank
if hist.has_key(outcome):
hist[outcome] += 1 # if key already exists, increment
else:
hist[outcome] = 1 # else create a new key
You could write that:
hist[outcome] = 1 + hist.get(outcome, 0)
Or with Python 2.5 you could use
hist = defaultdict(int)
...
hist[outcome] += 1 # automatically initializes to 0 if outcome not found
On Mar 10, 9:12 pm, Paul Rubin <http://phr...@NOSPAM.invalidwrote:
if hist.has_key(outcome):
hist[outcome] += 1 # if key already exists, increment
else:
hist[outcome] = 1 # else create a new key
You could write that:
hist[outcome] = 1 + hist.get(outcome, 0)
Or with Python 2.5 you could use
hist = defaultdict(int)
...
hist[outcome] += 1 # automatically initializes to 0 if outcome not found
Often when building a histogram, one knows in advance what the keys
will be. For instance, when working with data from 0 to 100 and
looking for frequencies by decade, you can initialize the histogram-
dict with:
for i in range(10):
histodict[i] = 0
and then just update the appropriate bucket without having to do any
testing at all:
fibSeqUpTo100 = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
for val in fibSeqUpTo100:
key = val/10
histodict[ key ] += 1
This has the added benefit of including entries for the empty buckets
as well.
-- Paul
Paul McGuire <pt***@austin.rr.comwrote:
will be. For instance, when working with data from 0 to 100 and
looking for frequencies by decade, you can initialize the histogram-
dict with:
for i in range(10):
histodict[i] = 0
A better way, of course (also saving the histodict = {} which you didn't
mention but surely intended) would be:
histodict = dict.fromkeys(range(10), 0)
In Python, in general, the more conceptually compact, direct, simple and
higher-abstraction approach tends to be faster as well, BTW.
Alex
On Mar 12, 3:19 pm, a...@mac.com (Alex Martelli) wrote:
Paul McGuire <p...@austin.rr.comwrote:
will be. For instance, when working with data from 0 to 100 and
looking for frequencies by decade, you can initialize the histogram-
dict with:
for i in range(10):
histodict[i] = 0
A better way, of course (also saving the histodict = {} which you didn't
mention but surely intended) would be:
histodict = dict.fromkeys(range(10), 0)
In Python, in general, the more conceptually compact, direct, simple and
higher-abstraction approach tends to be faster as well, BTW.
That's so true, especially if it's matched to the problem space, isn't
too new, and doesn't need looking up in the docs :-)
Python 2.1.3 (#35, Apr 8 2002, 17:47:50) [MSC 32 bit (Intel)] on
win32
Type "copyright", "credits" or "license" for more information.
>>histodict = dict.fromkeys(range(10), 0)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'dict' is not defined
>>histolist = [0] * 10 histolist[3] += 1 histolist
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
>>>
Cheers,
John
Frank wrote:
Hi,
does anyone know how one can test if, e.g., a dictionary 'name' has a
key called 'name_key'?
This would be possible:
keys_of_names = names.keys()
L = len(keys_of_names)
for i in range(L):
if keys_of_names[i] == name_key:
print 'found'
But certainly not efficient. I would expect there is something like:
name.is_key(name_key)
I appreciate your help!
Frank
Others have posted the direct answer but often you are wanting to
do something with the key if it exists and the best method is:
try: names['name_key']+=1
except KeyError:
#
# Key doesn't exist, create it, display error, or whatever you want
# to do if it doesn't exist.
#
-Larry
On Mar 11, 11:49 pm, "John Machin" <sjmac...@lexicon.netwrote:
On Mar 12, 3:19 pm, a...@mac.com (Alex Martelli) wrote:
Paul McGuire <p...@austin.rr.comwrote:
will be. For instance, when working with data from 0 to 100 and
looking for frequencies by decade, you can initialize the histogram-
dict with:
for i in range(10):
histodict[i] = 0
A better way, of course (also saving the histodict = {} which you didn't
mention but surely intended) would be:
histodict = dict.fromkeys(range(10), 0)
In Python, in general, the more conceptually compact, direct, simple and
higher-abstraction approach tends to be faster as well, BTW.
That's so true, especially if it's matched to the problem space, isn't
too new, and doesn't need looking up in the docs :-)
Python 2.1.3 (#35, Apr 8 2002, 17:47:50) [MSC 32 bit (Intel)] on
win32
Type "copyright", "credits" or "license" for more information.>>histodict = dict.fromkeys(range(10), 0)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'dict' is not defined>>histolist = [0] * 10
>histolist[3] += 1 histolist
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
In defense of my original if:else: idiom, I'll point
out that there may be more to be done when the key is
absent than simply creating a new one and initializing it.
Also, a dictionary doesn't need an integer index, so I can
create bins such as '2.01','2.02',etc.
And in some cases, it's not known what the range of the
keys will be making it difficult to pre-allocate the list.
And yes, the empty buckets will need to be created for
graphing purposes, but that can be done after the test
has completed so that the only empty buckets that need
be created are those between the outliers.
>
Cheers,
John
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: brianobush |
last post by:
#
# My problem is that I want to create a
# class, but the variables aren't known
# all at once. So, I use a dictionary to
# store the values in temporarily.
# Then when I have a complete set, I...
|
by: deko |
last post by:
What I'd like to do is create an array of values and test for existence of
those values.
Here's the non-working code I'm having trouble with:
Dim wcSearch(4 To 7) As Integer
If Me.Value =...
|
by: VMI |
last post by:
How can i test if a certain font is installed?
Thanks.
|
by: Zeno Lee |
last post by:
I'm using File.Exists to test a file on my C: drive.
My program was strongly named and had caspol -af run on it to allow it to
run from the network.
There are 3 ways I am doing this:
1) Run...
|
by: jg |
last post by:
I was trying to get custom dictionary class that can store generic or
string; So I started with the example given by the visual studio 2005 c#
online help for simpledictionay object
That seem...
|
by: arunmib |
last post by:
hi,
I would like to know whether "#pragma dictionary" exists in Linux. I have read that this is an ANSI equivalent of "#dictionary" concept present in OpenVMS system. In the following link it has...
|
by: Andy B |
last post by:
I don't know if this is even working or not but here is the problem. I have
a gridview that I databound to a dictionary<string, stringcollection:
Contract StockContract = new Contract();...
|
by: John Townsend |
last post by:
Joe had a good point! Let me describe what problem I'm trying to solve and the list can recommend some suggestions.
I have two text files. Each file contains data like this:
Test file 1234 4567...
|
by: Sweetiecakes |
last post by:
In our series of "probably something simple"...
I am doing a File.Exists operation to check if a file exists. Let's
assume that this file is C:/test.txt.
Now, if I do...
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
| |