Python 以列表形式打印词典的方法

Python 以列表形式打印词典的方法,python,list,dictionary,Python,List,Dictionary,所以我有一本字典,就像—— {'gaining': 34, 'Tinga': 42, 'small': 39, 'legs,': 13,}. 是否有一种方法可以将其打印出来,使其成为一个列表,如—— [ gaining, Tinga, small, legs ] 因此,只打印键,而不打印沿着键的值。还有没有一种方法可以使字典不以任意顺序工作?例如,如果两个键重复,而不是给它最后一个键的值,我们给它第一个键的值 eg {'gaining' : 34, 'Tinga' : 42,

所以我有一本字典,就像——

 {'gaining': 34, 'Tinga': 42, 'small': 39, 'legs,': 13,}. 
是否有一种方法可以将其打印出来,使其成为一个列表,如——

 [ gaining, Tinga, small, legs ] 
因此,只打印键,而不打印沿着键的值。还有没有一种方法可以使字典不以任意顺序工作?例如,如果两个键重复,而不是给它最后一个键的值,我们给它第一个键的值

eg

   {'gaining' : 34, 'Tinga' : 42, 'small : 39, 'legs,' : 13 'gaining' : 20}
印刷时

   print dict['gaining']
输出结果如下所示

   34 
而不是作为

   20
dict.keys()足以实现您要求的第一件事

你的第二个问题有点棘手。你看,字典存储键值对,字典有唯一的键。因此,您不能按照描述的方式将多个值对应于一个键


相反,您可以做的是将dict中的每个值定义为一个列表,并将某个键的新值附加到该键的列表中。(即dict[key])然后,当您尝试读取一个键的随机值时,您可以从列表dict[key]中选择一个随机值。

这将使您的键进入一个列表

keyList = [x for x,y in d.items()]

根据定义,字典不能有两个相同的键。你应该了解它们是如何工作的

回答你的问题:

d={'gending':34,'Tinga':42,'small':39,'legs':13}
d、 钥匙()
哪个会回来

dict_keys(['legs', 'gaining', 'Tinga', 'small'])
[legs, gaining, Tinga, small]
如果确实要按指定的格式打印,请执行以下操作:

print('[' + ', '.join(d.keys()) + ']')
哪个会回来

dict_keys(['legs', 'gaining', 'Tinga', 'small'])
[legs, gaining, Tinga, small]

请注意,字典是不按定义排序的,因此确切的输出可能会有所不同。

打印键很简单。在Python 3中:

d = {'gaining': 34, 'Tinga': 42, 'small': 39, 'legs,': 13,}
print(list(d.keys()))
在Python2中,
dict.keys
已经返回一个列表而不是一个特殊的视图对象,所以您可以这样做

print d.keys()
您可以使用
setdefault
方法在dict中设置值,而无需覆盖以前的键。此方法仅当键在
dict
中不存在时才设置键的值。唯一的问题是它一次只处理一个键,因此您需要将其放入循环或按顺序执行:

d.setdefault('gaining', 34)
d.setdefault('Tinga', 42)
d.setdefault('small', 39)
d.setdefault('legs', 13)
d.setdefault('gaining', 20)
print (d['gaining'])

34


字典不能有重复的键。@Andy根本没有办法吗?这些键可以作为列表提供,如
。键()
重复键不是问题。这就是字典的工作方式。看起来你想让我们为你写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(输出、回溯等)。你提供的细节越多,你可能得到的答案就越多。请检查和。。。。或者只使用
.keys()
这叫做
d.keys()
。是的,这很明显:)只是给海报提供了另一个选项,以更好地了解字典、列表和迭代。与
d.keys()或
list(d.keys())相比,
[k for k in d.keys()]
有何不同
?@DYZ我想它不是,但可以使它更容易适应其他打印格式?