簡體   English   中英

創建嵌套字典的 Pythonic 方法

[英]Pythonic way to create a nested dictionary

我正在尋找一種 Pythonic 方法來從列表和字典創建嵌套字典。 以下兩個語句產生相同的結果:

a = [3, 4]
b = {'a': 1, 'b': 2}

c = dict(zip(b, a))
c = {k: v for k, v in zip(b, a)}

Output 是:

{3: 'a', 4: 'b'}

期望的結果是:

{3: {'a': 1}, 4: {'b': 2}}

我可以開始使用循環,但我不認為這是必要的。 當然,之后我需要再次展平這些字典。

>>> {k: {va: vb} for k, (va, vb) in zip(a, b.items())}
{3: {'a': 1}, 4: {'b': 2}}

像這樣:

a = [3, 4]
b = {'a': 1, 'b': 2}
c = {i: {k:b[k]} for i,k in zip(a,b)}

print(c)

Output:

{3: {'a': 1}, 4: {'b': 2}}

在我看來,更“Pythonic”的方式是使用更具描述性的變量名和dict()構造函數:

keys = [3, 4]
orig_dict = {'a': 1, 'b': 2}
nested_dict = {key: dict([item]) for (key, item) in zip(keys, orig_dict.items())}

還有另一種方法,使用中間可迭代:

sub_dicts = [dict([item]) for item in orig_dict.items()]
nested_dict = dict(zip(keys, sub_dicts))

最后,在這種情況下,只使用循環似乎就好了:

nested_dict = {}
for key, item in zip(keys, orig_dict.items()):
    nested_dict[key] = dict([item])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM