首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从现有词典制作python词典

从现有词典制作python词典
EN

Stack Overflow用户
提问于 2017-06-15 12:36:54
回答 1查看 77关注 0票数 0

我可以从一个dict中获得标记和数据,我使用的方式如下:

代码语言:javascript
复制
tags_df_map = zip(tags, data)
append_series = [series for tags,series in tags_df_map if tags['Index'] =='A']
append_tags = [tags['Index'] for tags, series in tags_df_map if tags['Index'] =='A']
series_to_append = dict(zip(append_tags,append_series))

在Python中是否有一种更简单、更有效的方法来实现series_to_append dict?提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-16 08:32:22

你可以用字典理解:

代码语言:javascript
复制
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'的值。

下面是使用中的词典理解的一个例子:

代码语言:javascript
复制
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}

另外,作为警告,由于您使用的似乎是Python2,所以在理解中使用tags作为变量名将导致变量tags指向它在理解中分配的最后一个值(而不是它之前指出的值)。也就是说,为列表理解中的变量赋值与列表理解之外的变量赋值一样。值得注意的是,由于理解的范围如何,Python 3中没有出现这种情况,但是除非有充分的理由,否则在理解中不重用变量名仍然是很好的实践。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44567725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档