Create dictionary comprehension from list with condition syntax

2024/10/5 17:17:59

I'd like to create a dictionary using dictionary comprehension syntax.

Note that list l contains tuples of strings and tuples with 1st element always a time stamp.

This works:

d = {}
for entry in l:if entry[0] not in d:d[entry[0]] = []d[entry[0]].append(entry)

This doesn't work:

d = {k[0].append(k) for k in l if k[0] in d else k[0]:k for k in l}File "<stdin>", line 1d = {k[0].append(k) for k in l if k[0] in d else k[0]:k for k in l}^
SyntaxError: invalid syntax
Answer

You can't use a dictionary comprehension for this. For each iteration step (if not filtered), a new key-value pair is produced. That means you can't update another, already generated key-value pair.

Just stick with the loop. You can simplify it with dict.setdefault():

d = {}
for entry in l:d.setdefault(entry[0], []).append(entry)

Note that d in your example won't exist until the dictionary comprehension has completed; only then is d bound to the result. And more specifically addressing the syntax error, Python sees the part before the : as a separate expression to produce the key in the key-value pair, and the for ... in ... syntax there is being parsed as a generator expression (a form of comprehension syntax); you can use if in such an expression to filter, but there is no else part possible in a comprehension, hence the error pointing at else there.

https://en.xdnf.cn/q/119189.html

Related Q&A

How to find next empty cell on a specific column and write to it?

I want to find the next empty cell in a specific column and write to values that cell. Ive tried it using following method: for row in sheet[A{}:A{}.format(sheet.min_row,sheet.max_row)]:if row is None:…

How can i pass data from template in Django to Javascript in this specific case

I am using Google map api and i am trying to pass the data (longitude and latitude) to the template then use the data in the javascript to show a specific location.location.html{% for venue in propert…

Python Highscores w/ text file

i am currently working on a text based game, and have run into a problem trying to make my last function, highscore. My problem is this, i would like to make the function save my top five scores and sa…

Do any one know about this Error in python? how can I resolve this?

I am plotting the data with MapBoxGl Python Library on maps, here is my code which is taking the latitude, longitude and points from the Pandas DataFrame and trying to make the geojson, here is the cod…

Pandas: Count Higher Ranks For Current Experiment Participants In Later Experiments (Part 1)

Learning Experiments In a series of learning experiments, I would like to count the number of participants in each experiment that improved their performance in subsequent experiments (Rank 1 is highes…

Pass variables into and out of exec [closed for not being clear. Modified and reuploaded] [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.Want to improve this question? Add details and clarify the problem by editing this post.Closed 3 years ago.Improve…

List Object Not Callable, Syntax Error for Text-Based RPG

Im having issues (still) with generating a random object, in this case a random herb found by foraging. Heres the code for the function:def collectPlants(self):if self.state == normal:print"%s spe…

Why does my Tkinter window background not change?

Ive a small program with a feature to change the background color of a different window than the frame I use to ask for the background color. (I hope you understand this.) The program is written in Pyt…

Combining a nested list without affecting the key and value direction in python

I have a program that stores data in a list. The current and desired output is in the format:# Current Input [{Devices: [laptops, tablets],ParentCategory: [computers, computers]},{Devices: [touch], Par…

Splitting very large csv files into smaller files

Is Dask proper to read large csv files in parallel and split them into multiple smaller files?