Way to print dictionary as a list
本问题已经有最佳答案,请猛点这里访问。
所以我有一本字典-
1 | {'gaining': 34, 'Tinga': 42, 'small': 39, 'legs,': 13,}. |
有没有一种方法可以把它打印出来,使它变成一个列表-
1 | [ gaining, Tinga, small, legs ] |
这样,只打印按键,而不打印与之相关的值。还有一种方法可以使字典不按任意顺序工作吗?比如,如果重复两个键而不是给出最后一个键的值,我们就给出第一个键的值?
如;
1 | {'gaining' : 34, 'Tinga' : 42, 'small : 39, 'legs,' : 13 'gaining' : 20} |
印刷时
1 | print dict['gaining'] |
输出为
1 | 34 |
而不是作为
1 | 20 |
打印按键很简单。在Python 3中:
1 2 | d = {'gaining': 34, 'Tinga': 42, 'small': 39, 'legs,': 13,} print(list(d.keys())) |
在python 2中,
1 | print d.keys() |
您可以在dict中设置值,而不必使用
1 2 3 4 5 6 7 8 | d.setdefault('gaining', 34) d.setdefault('Tinga', 42) d.setdefault('small', 39) d.setdefault('legs', 13) d.setdefault('gaining', 20) print (d['gaining']) 34 |
或
1 2 3 4 5 6 7 | i = [('gaining', 34), ('Tinga', 42), ('small', 39), ('legs', 13), ('gaining', 20)] for k, v in i: d.setdefault(k, v) |
根据定义,字典不能有两个相同的键。您应该阅读python文档以了解它们的实际工作方式。
要回答您的问题:
1 2 | d = {'gaining': 34, 'Tinga': 42, 'small': 39, 'legs': 13} d.keys() |
哪个会回来
1 | dict_keys(['legs', 'gaining', 'Tinga', 'small']) |
如果确实要按指定的格式打印:
1 | print('[' + ', '.join(d.keys()) + ']') |
哪个会回来
1 | [legs, gaining, Tinga, small] |
请注意,字典没有按定义排序,因此确切的输出可能会有所不同。
dict.keys()将足以实现您要求的第一件事。
你的第二个问题有点棘手。你看,字典存储键值对,有一个概念就是字典有唯一的键。因此,不能以您描述的方式放置与键对应的多个值。
相反,您可以将dict中的每个值定义为一个列表,并将键的新值附加到该键的列表中。(即dict[键])然后,当您试图读取某个键的随机值时,可以从列表dict[键]中选择一个随机值。
这会把你的钥匙放在一张单子里
1 | keyList = [x for x,y in d.items()] |