python3

时间:2019-03-12 15:34:25

标签: python dictionary

dict = {'a':1, 'b':2}

dict.keys给出dict_keys(['a', 'b'])

dict.values给出dict_values([1, 2])

有人可以举例说明dict_keysdict_values如何派上用场吗?为什么字典返回这些类型而不是仅返回列表?

我经常做list(dict.keys)list(dict.values),转换成要循环播放的列表。

3 个答案:

答案 0 :(得分:4)

也许您有另一种疑问:为什么这些方法应该返回列表?

正如评论所指出的那样,如果这些方法必须返回列表,则必须首先创建此列表。相反,您可以遍历dict_keysdict_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