-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?

Red
  • 26,798
  • 7
  • 36
  • 58
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}
Red
  • 26,798
  • 7
  • 36
  • 58
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,781
  • 24
  • 34