关于python:将字典打印为列表的方法

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中,dict.keys已经返回了一个列表,而不是一个特殊的视图对象,所以您可以这样做

1
print d.keys()

您可以在dict中设置值,而不必使用setdefault方法覆盖以前的键。此方法仅当键在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()]