Ari*_*nda 10 python dictionary
我有一个嵌套的python dictionary数据结构.我想without用collection模块读取它的键和值.数据结构如下所示.
d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}
Run Code Online (Sandbox Code Playgroud)
我试图使用波纹管方式读取字典中的键但得到错误.
码
for key, value in d:
print(Key)
Run Code Online (Sandbox Code Playgroud)
错误
ValueError: too many values to unpack (expected 2)
Run Code Online (Sandbox Code Playgroud)
所以任何人都可以解释错误背后的原因以及如何遍历字典.
0x0*_*0x0 36
以下内容适用于多层嵌套字典:
def get_all_keys(d):
for key, value in d.items():
yield key
if isinstance(value, dict):
yield from get_all_keys(value)
d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'dict3': {'baz': 3, 'quux': 4}}}
for x in get_all_keys(d):
print(x)
Run Code Online (Sandbox Code Playgroud)
这会给你:
dict1
foo
bar
dict2
dict3
baz
quux
Run Code Online (Sandbox Code Playgroud)
作为请求的输出,代码是这样的
d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}
for k1,v1 in d.iteritems(): # the basic way
temp = ""
temp+=k1
for k2,v2 in v1.iteritems():
temp = temp+" "+str(k2)+" "+str(v2)
print temp
Run Code Online (Sandbox Code Playgroud)
代替iteritems()你也可以使用items(),但iteritems()效率更高并返回迭代器.
希望这可以帮助 :)
keys() 方法返回一个视图对象,该对象显示字典中所有键的列表
迭代嵌套字典:
d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}
for i in d.keys():
print i
for j in d[i].keys():
print j
Run Code Online (Sandbox Code Playgroud)
要么
for i in d:
print i
for j in d[i]:
print j
Run Code Online (Sandbox Code Playgroud)
输出:
dict1
foo
bar
dict2
baz
quux
Run Code Online (Sandbox Code Playgroud)
在其中i迭代主字典键并j迭代嵌套的字典键。
小智 6
您可以迭代嵌套字典的所有键和值,如下所示:
d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}
for i in d:
for j, k in d[i].items():
print(j,"->", k)
Run Code Online (Sandbox Code Playgroud)
你的输出看起来像这样 -
foo -> 1
bar -> 2
baz -> 3
quux -> 4
Run Code Online (Sandbox Code Playgroud)
获取您需要的密钥和值dict.items():
for key, value in d.items():
print(key)
Run Code Online (Sandbox Code Playgroud)
如果你只想要钥匙:
for key in d:
print(key)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26229 次 |
| 最近记录: |