dict = {'a':1, 'b':2}
dict.keys
给出dict_keys(['a', 'b'])
dict.values
给出dict_values([1, 2])
。
有人可以举例说明dict_keys
和dict_values
如何派上用场吗?为什么字典返回这些类型而不是仅返回列表?
我经常做list(dict.keys)
和list(dict.values)
,转换成要循环播放的列表。
答案 0 :(得分:4)
也许您有另一种疑问:为什么这些方法应该返回列表?
正如评论所指出的那样,如果这些方法必须返回列表,则必须首先创建此列表。相反,您可以遍历dict_keys
和dict_values
对象,而无需创建整个大列表。 (您说您经常将这些对象强制转换为列表,以遍历它们。您无需这样做:您可以像for value in my_dict.values()
中那样直接遍历对象。)
如果您确实需要一个列表(请注意,通常情况并非如此),那么认为最好是明确的,然后自己创建一个列表:x = list(my_dict.keys())
。
答案 1 :(得分:0)
如果要在循环中使用字典,则无需转换为列表:
如果需要值,请遵循以下方法:
dict = {'a':1, 'b':2}
a=[]
for value in dict.values():
a.append(value)
print(a)
这将产生输出[1,2]
如果您想要按键,请遵循以下方法:
dict = {'a':1, 'b':2}
a=[]
for key in dict.keys():
a.append(key)
print(a)
这将产生输出['a','b']
如果同时需要键和值,请遵循以下方法:
dict = {'a':1, 'b':2}
a=[]
for values in dict.items():
a.append(values)
print(a)
这将产生输出[['a',1),('b',2)]
答案 2 :(得分:0)
您可以遍历字典的值:
$ ./bin/docker-image-tool.sh -r <repo> -t my-tag build
$ ./bin/docker-image-tool.sh -r <repo> -t my-tag push
通过键:
for v in dict.values():
# do something
还要遍历键:
for k in dict.keys():
# do something
通过项(键和值,可用于更改dict的值):
for k in dict:
# do something
您可以根据另一个键(如上所述)创建一个新字典:
for k, v in dict.items():
dict[k] = v * 2 # multiplies each value of the dict by 2