-2

I have the following dictionary.

{'VVD': ['male', 'female', 'female', 'female', 'female', 'male', 'male', 'female', 'male', 'female', 'male', 'male', 'female', 'female', 'male', 'male', 'female', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'female', 'male', 'female', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'female', 'female', 'male', 'female', 'male', 'male', 'male', 'male', 'male', 'male', 'female', 'female', 'male', 'female', 'male', 'female', 'male', 'male', 'male', 'male', 'male', 'female', 'female', 'female', 'female', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male'], 'PVV (Partij voor de Vrijheid)': ['male', 'female', 'male', 'male', 'female', 'male', 'male', 'male', 'female', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'female', 'female', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male']}

I want to get the first 30 values per key. How can I do this?

Ann Zen
  • 25,080
  • 7
  • 31
  • 51
Thomma
  • 19
  • 5

2 Answers2

2

You can use a for loop:

dct = {'VVD': ['male', 'female', 'female', 'female', 'female', 'male', 'male', 'female', 'male', 'female', 'male', 'male', 'female', 'female', 'male', 'male', 'female', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'female', 'male', 'female', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'female', 'female', 'male', 'female', 'male', 'male', 'male', 'male', 'male', 'male', 'female', 'female', 'male', 'female', 'male', 'female', 'male', 'male', 'male', 'male', 'male', 'female', 'female', 'female', 'female', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male'], 'PVV (Partij voor de Vrijheid)': ['male', 'female', 'male', 'male', 'female', 'male', 'male', 'male', 'female', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'female', 'female', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'female', 'male', 'male', 'male', 'male']}

for key in dct:
    print(dct[key][:30])

Or, if you want them in a list, you can use a list comprehension:

lst = [dct[key][:30] for key in dct]

If you don't want the list to be a nested list, you can use a nested list comprehension:

lst = [val for key in dct for val in dct[key][:30]]

If you want to keep the dictionary:

dct = {key: val[:30] for key, val in dct.items()}

or

dct = {key: dct[key][:30] for key in dct}
Ann Zen
  • 25,080
  • 7
  • 31
  • 51
1

Use dict.values() in list comprehension:

first_thirty_per_key = [value[:30] for value in my_dict.values()]

To keep the keys (and hence keep the dictionary), use a dictionary comprehension with dict.items():

my_dict_shortened = {key: value[:30] for key, value in my_dict.items()}
Jan Christoph Terasa
  • 5,486
  • 22
  • 31