iterate over a single dimension in python dictiona

2019-08-09 15:45发布

Possible Duplicate:
iterating one key in a python multidimensional associative array

i created a dictionary on 2 dimensions myaddresses['john','smith'] = "address 1" myaddresses['john','doe'] = "address 2"

How can i iterate over one dimension in the fashion

for key in myaddresses.keys('john'):

3条回答
看我几分像从前
2楼-- · 2019-08-09 16:16

Bad news: you can't (not directly at least). What you did was not a "2 dimensions" dict, but a dict with tuples (string pairs in your case) as keys, and only the hash value of the key is used (as usually with hashtables). What you want requires a sequential lookup, ie:

for key, val in my_dict.items():
    # no garantee we have string pair as key here
    try:
        firstname, lastname = key
    except ValueError:
        # not a pair...
        continue
    # this would require another try/except block since
    # equality test on different types can raise anything
    # but let's pretend it's ok :-/
    if firstname == "john":
        do_something_with(key, val)

Needless to say that it kind of defeat the whole point of using a dict. Err... what about using a proper relational DB instead ?

查看更多
可以哭但决不认输i
3楼-- · 2019-08-09 16:25

Try:

{k[1]:v for k,v in myaddresses.iteritems() if k[0]=='john'}
查看更多
乱世女痞
4楼-- · 2019-08-09 16:31

It iterates over all keys, so it might not be the most efficient way, but I'll just state the obvious method in case you overlooked it:

for key in myaddresses.keys():
    if key[0] == 'john':
        print myaddresses[key]
查看更多
登录 后发表回答