[英]Transforming a dict to another structure in Python
我有一個如下的字典:
{'activity_count': [10, 11, 12], 'type': ['all', 'paper', 'fpy']}
我想將這個字典轉換成這種形式:
{'all': {'activity_count': 10}, 'paper': {'activity_count': 11}, 'fpy': {'activity_count': 12}}
我怎么解決這個問題?
到目前為止我試過這個解決方案
dic={"activity_count":[10,11,12],"type":["all","paper","fpy"]}
in={}
i=0
for val in dic['type']:
for v in dic['activity_count']:
if i== dic['activity_count'].index(v):
temp={}
temp['activity_count']=v
fin[val]=temp
i+=1
它按照我的預期工作,但它看起來非常無效的方式來完成這項任務。 有沒有辦法解決這個問題?
這里是一個嘗試,這里的zip
用於從兩個列表中獲取值並分配每個:
d = {'activity_count': [10, 11, 12], 'type': ['all', 'paper', 'fpy']}
nd = {j:{'activity_count':i} for i, j in zip(d['activity_count'], d['type'])}
print(nd)
我會去拉鏈和詞典理解:
test = {'activity_count': [10, 11, 12], 'type': ['all', 'paper', 'fpy']}
solution = {key:{'activity_count':value} for value, key in zip(test["activity_count"],test["type"])}
說明:兩個列表的zip
用相同的索引將兩個列表的元素組合在一起。 因此,它會將您的列表轉換為生成器,其值如下所示: [(10, 'all'), (11, 'paper'), (12, 'fpy')]
。 但是生成器是惰性求值的,因此僅在dict理解要求時才處理元組,這樣可以節省內存。
字典理解只是迭代這個生成器並將第二個元素作為鍵,第一個元素作為值。
你可以使用枚舉來嘗試這個字典理解:
dictionary = {'activity_count': [10, 11, 12], 'type': ['all', 'paper', 'fpy']}
{e:{"activity_count":dictionary.get("activity_count")[c]} for c,e in enumerate(dictionary.get("type"))}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.