您可以使用字典解析:
series_to_append = {tag[my_key]: series for tag, series in zip(tags, data)
if tag['Index'] == 'A'}
請注意,我用的任意可變my_key
因爲我使用的訪問tag
生成字典理解的密鑰的密鑰。之前,您曾使用tag['Index']
爲series_to_append
創建密鑰。這將導致series_to_append
只有一個密鑰('A'
),因爲您只使用其中tag['Index']
等於'A'
的值。
下面是這個字典解析中使用的例子:
data = [0,1,2,3,4,5,6]
tags = [{'Index': 'A', 'Key': chr(x+65)} if x % 2 == 0 else {'Index': 'B', 'Key': chr(x+65)}
for x in range(7)]
# the original code snippet
tags_df_map = zip(tags, data)
append_series = [series for tag, series in tags_df_map if tag['Index'] =='A']
append_tags = [tag['Index'] for tag, series in tags_df_map if tag['Index'] =='A']
series_to_append = dict(zip(append_tags,append_series))
print(series_to_append)
>> {'A': 6}
{tag['Index']: series for tag, series in zip(tags, data)
if tag['Index'] == 'A'}
>> {'A': 6}
{tag['Key']: series for tag, series in zip(tags, data)
if tag['Index'] == 'A'}
>> {'A': 0, 'C': 2, 'E': 4, 'G': 6}
此外,作爲一個警告,因爲它似乎你正在使用Python 2,使用tags
爲您內涵內部變量名將導致變量tags
指向它在理解中分配的最後一個值(而不是它之前指向的值)。也就是說,將一個值賦給列表理解中的一個變量將被視爲與列表理解之外的變量賦值相同。值得注意的是,由於如何理解範圍,在Python 3中不會發生這種情況,但除非有足夠的理由這樣做,否則通常不要在理解中重用變量名稱。
你想只有一個鍵,值對的字典? – kuro
[如何計算兩個時間字符串之間的時間間隔]的可能重複(https://stackoverflow.com/questions/3096953/how-to-calculate-the-time-interval-between-two-time-string) – jlange
@jlange,你在說什麼? – kuro