Henk Straten
Henk Straten

Reputation: 1447

Match words in a dictionary

I have a dictionary that looks like this:

dictionary = {u'12.75': u' over ', u'2214.23': u' content ', u'2225.86': u' voor ', u'7.17': u' vraag ', u'11.01': u' bedrijf ', u'2228.27': u' wordt ', u'12.0': u' ik ', u'12.6': u' meer ', u'2223.29': u' ik ', u'6.9': u' paar ', u'17.22': u' binnen ', u'2216.86': u' solide ', u'23.67': u' ja ', u'12.09': u' dan ', u'2212.9': u' jij ', u'21.59': u' ja ', u'20.64': u' opleiding ', u'14.46': u' onderzoek ', u'0.54': u' nou ', u'2224.31': u' genoeg ', u'2223.98': u' ik ', u'2227.99': u' voor ', u'2225.03': u' dat ', u'3.18': u' heel ', u'2216.59': u' lukte ', u'2215.93': u' verder ', u'17.37': u' het ', u'2213.04': u' jij ', u'2226.13': u' is ', u'1.76': u' was ', u'11.66': u' maar ', u'2221.22': u' denk ', u'3.02': u' ben ', u'2216.42': u' dat ', u'12.43': u' iets ', u'11.84': u' ga ', u'2215.82': u' dat ', u'4.68': u' zelf ', u'2220.65': u' dat ', u'2.45': u' lekker ', u'2219.08': u' gekapt ', u'2215.73': u' om ', u'11.77': u' daar ', u'13.83': u' ik ', u'18.03': u' founder ', u'22.91': u' een ', u'14.91': u' ben ', u'5.27': u' koken ', u'2226.53': u' je ', u'2218.8': u' mijn ', u'22.19': u' ik ', u'2214.64': u' wordt ', u'14.18': u' van ', u'2226.59': u' hebt ', u'3.83': u' ik ', u'2224.61': u' ik ', u'20.25': u' zelf ', u'2227.1': u' alles ', u'16.89': u' functie ', u'2216.27': u' gaan ', u'9.81': u' eerst ', u'4.46': u' speel ', u'2221.49': u' was ', u'22.64': u' ik ', u'2224.73': u' zeg ', u'2.68': u' mee ', u'0.99': u' hele ', u'0.8': u' mijn ', u'19.2': u' klopt ', u'2.88': u' en ', u'3.59': u' pak ', u'10.08': u' over ', u'14.37': u' het ', u'13.9': u' zelf ', u'2226.38': u' en ', u'21.09': u' gedaan ', u'22.76': u' zo ', u'2215.2': u' ook ', u'2220.91': u' dat ', u'2213.5': u' alles ', u'2220.12': u' dus ', u'2221.1': u' is ', u'2221.4': u' ik ', u'17.43': u' bedrijf ', u'2220.4': u' wat ', u'2221.62': u' moeilijk ', u'2228.15': u' mij ', u'4.26': u' ik ', u'2224.13': u' weet ', u'13.67': u' wat ', u'22.49': u' of ', u'11.34': u' zelf ', u'2215.37': u' geprobeerd ', u'7.72': u' is ', u'1.23': u' jeugd ', u'2216.18': u' te '}

Now I rank this dictionary and call it sorted_dictionary:

sorted_dictionary = [(u'0.54', u' nou '), (u'0.8', u' mijn '), (u'0.99', u' hele '), (u'1.23', u' jeugd '), (u'1.76', u' was '), (u'10.08', u' over '), (u'11.01', u' bedrijf '), (u'11.34', u' zelf '), (u'11.66', u' maar '), (u'11.77', u' daar '), (u'11.84', u' ga '), (u'12.0', u' ik '), (u'12.09', u' dan '), (u'12.43', u' iets '), (u'12.6', u' meer '), (u'12.75', u' over '), (u'13.67', u' wat '), (u'13.83', u' ik '), (u'13.9', u' zelf '), (u'14.18', u' van '), (u'14.37', u' het '), (u'14.46', u' onderzoek '), (u'14.91', u' ben '), (u'16.89', u' functie '), (u'17.22', u' binnen '), (u'17.37', u' het '), (u'17.43', u' bedrijf '), (u'18.03', u' founder '), (u'19.2', u' klopt '), (u'2.45', u' lekker '), (u'2.68', u' mee '), (u'2.88', u' en '), (u'20.25', u' zelf '), (u'20.64', u' opleiding '), (u'21.09', u' gedaan '), (u'21.59', u' ja '), (u'22.19', u' ik '), (u'22.49', u' of '), (u'22.64', u' ik '), (u'22.76', u' zo '), (u'22.91', u' een '), (u'2212.9', u' jij '), (u'2213.04', u' jij '), (u'2213.5', u' alles '), (u'2214.23', u' content '), (u'2214.64', u' wordt '), (u'2215.2', u' ook '), (u'2215.37', u' geprobeerd '), (u'2215.73', u' om '), (u'2215.82', u' dat '), (u'2215.93', u' verder '), (u'2216.18', u' te '), (u'2216.27', u' gaan '), (u'2216.42', u' dat '), (u'2216.59', u' lukte '), (u'2216.86', u' solide '), (u'2218.8', u' mijn '), (u'2219.08', u' gekapt '), (u'2220.12', u' dus '), (u'2220.4', u' wat '), (u'2220.65', u' dat '), (u'2220.91', u' dat '), (u'2221.1', u' is '), (u'2221.22', u' denk '), (u'2221.4', u' ik '), (u'2221.49', u' was '), (u'2221.62', u' moeilijk '), (u'2223.29', u' ik '), (u'2223.98', u' ik '), (u'2224.13', u' weet '), (u'2224.31', u' genoeg '), (u'2224.61', u' ik '), (u'2224.73', u' zeg '), (u'2225.03', u' dat '), (u'2225.86', u' voor '), (u'2226.13', u' is '), (u'2226.38', u' en '), (u'2226.53', u' je '), (u'2226.59', u' hebt '), (u'2227.1', u' alles '), (u'2227.99', u' voor '), (u'2228.15', u' mij '), (u'2228.27', u' wordt '), (u'23.67', u' ja '), (u'3.02', u' ben '), (u'3.18', u' heel '), (u'3.59', u' pak '), (u'3.83', u' ik '), (u'4.26', u' ik '), (u'4.46', u' speel '), (u'4.68', u' zelf '), (u'5.27', u' koken '), (u'6.9', u' paar '), (u'7.17', u' vraag '), (u'7.72', u' is '), (u'9.81', u' eerst ')]

What I want to do now is to loop through the new dictionary to see if trigger words are there. However if I take a word which is obviously there in the dictionary (fe 'now') and I do this:

hit = 'nou'

for element in sorted_dictionary:
    element_final = element[1].encode('ascii','ignore')
    print element_final
    if element_final == hit:
        print "succes"

I do not get any hits ... Strange cause they are both:

<type 'str'>

Any thoughts on what goes wrong here? Thank you!

Upvotes: 0

Views: 59

Answers (4)

Nicolas Wagner
Nicolas Wagner

Reputation: 11

try this: if element_final in hit:

I had this issue before and it worked for me.

Upvotes: 0

bakatrouble
bakatrouble

Reputation: 1844

You could check if word is in dict values another way:

if hit in dict(sorted_dictionary).values()
    print("success")

There's also collections.OrderedDict class which enables you to create sorted dict from sorted list of 2-value tuples.

Upvotes: 0

Oleksii Filonenko
Oleksii Filonenko

Reputation: 1653

You need to strip() the whitespace around values.

for key, value in sorted_dictionary:
    if value.strip() == hit:
        print("success")

By the way, better way would be:

if hit in [v.strip() for v in dictionary.values()]:
    print("success")

Upvotes: 0

RomanPerekhrest
RomanPerekhrest

Reputation: 92854

You have leading/trailing spaces around "trigger words" within your list of tuples. Use the following:

sorted_dictionary = [(u'0.54', u' nou '), (u'0.8', u' mijn '), (u'0.99', u' hele '), (u'1.23', u' jeugd '), (u'1.76', u' was '), (u'10.08', u' over '), (u'11.01', u' bedrijf '), (u'11.34', u' zelf '), (u'11.66', u' maar '), (u'11.77', u' daar '), (u'11.84', u' ga '), (u'12.0', u' ik '), (u'12.09', u' dan '), (u'12.43', u' iets '), (u'12.6', u' meer '), (u'12.75', u' over '), (u'13.67', u' wat '), (u'13.83', u' ik '), (u'13.9', u' zelf '), (u'14.18', u' van '), (u'14.37', u' het '), (u'14.46', u' onderzoek '), (u'14.91', u' ben '), (u'16.89', u' functie '), (u'17.22', u' binnen '), (u'17.37', u' het '), (u'17.43', u' bedrijf '), (u'18.03', u' founder '), (u'19.2', u' klopt '), (u'2.45', u' lekker '), (u'2.68', u' mee '), (u'2.88', u' en '), (u'20.25', u' zelf '), (u'20.64', u' opleiding '), (u'21.09', u' gedaan '), (u'21.59', u' ja '), (u'22.19', u' ik '), (u'22.49', u' of '), (u'22.64', u' ik '), (u'22.76', u' zo '), (u'22.91', u' een '), (u'2212.9', u' jij '), (u'2213.04', u' jij '), (u'2213.5', u' alles '), (u'2214.23', u' content '), (u'2214.64', u' wordt '), (u'2215.2', u' ook '), (u'2215.37', u' geprobeerd '), (u'2215.73', u' om '), (u'2215.82', u' dat '), (u'2215.93', u' verder '), (u'2216.18', u' te '), (u'2216.27', u' gaan '), (u'2216.42', u' dat '), (u'2216.59', u' lukte '), (u'2216.86', u' solide '), (u'2218.8', u' mijn '), (u'2219.08', u' gekapt '), (u'2220.12', u' dus '), (u'2220.4', u' wat '), (u'2220.65', u' dat '), (u'2220.91', u' dat '), (u'2221.1', u' is '), (u'2221.22', u' denk '), (u'2221.4', u' ik '), (u'2221.49', u' was '), (u'2221.62', u' moeilijk '), (u'2223.29', u' ik '), (u'2223.98', u' ik '), (u'2224.13', u' weet '), (u'2224.31', u' genoeg '), (u'2224.61', u' ik '), (u'2224.73', u' zeg '), (u'2225.03', u' dat '), (u'2225.86', u' voor '), (u'2226.13', u' is '), (u'2226.38', u' en '), (u'2226.53', u' je '), (u'2226.59', u' hebt '), (u'2227.1', u' alles '), (u'2227.99', u' voor '), (u'2228.15', u' mij '), (u'2228.27', u' wordt '), (u'23.67', u' ja '), (u'3.02', u' ben '), (u'3.18', u' heel '), (u'3.59', u' pak '), (u'3.83', u' ik '), (u'4.26', u' ik '), (u'4.46', u' speel '), (u'4.68', u' zelf '), (u'5.27', u' koken '), (u'6.9', u' paar '), (u'7.17', u' vraag '), (u'7.72', u' is '), (u'9.81', u' eerst ')]
hit = 'nou'

for element in sorted_dictionary:
    element_final = element[1].strip()
    if element_final == hit:
        print(element, "succes")

The output:

('0.54', ' nou ') succes

Upvotes: 2

Related Questions