从字典中提取键作为平面列表

时间:2018-01-18 12:27:16

标签: python python-3.x list dictionary

我有一个字典对象如下:

{('look', 'toward'): 1,
 ('new', 'cage'): 3,
 ('think', 'surpris'): 0,
 ('go', 'see'): 1 }

我想做的是按顺序分别提取每个单词 'look','朝','new','cage'......最后没有使用值()。 我该如何提取这些单词? 制作列表而不是字典更好吗? 如果详细解释,我们将非常感激。

5 个答案:

答案 0 :(得分:4)

您只对感兴趣,而不是"值"。键是用于索引字典的键。

干净的方法是调用options并使用dict.keys()展平它。 itertools.chain,首先。

import itertools

请注意,不保证返回字符串的顺序,因为python的字典在3.6之前的版本上没有排序。

答案 1 :(得分:3)

这就是你要找的东西:

d = {('look', 'toward'): 1,
 ('new', 'cage'): 3,
 ('think', 'surpris'): 0,
 ('go', 'see'): 1 }

[kk for k in d for kk in k]
# returns:
['look', 'toward', 'think', 'surpris', 'new', 'cage', 'go', 'see']

答案 2 :(得分:2)

提取a是否是你的词典的简单方法:

>>> for key, value in a.items():
...     print(key[0],key[1],value)
...
look toward 1
new cage 3
think surpris 0
go see 1

你可以玩你想要的:

>>> for key, value in a.items():
...     print(f'{key[0]}: {value}')
...     print(f'{key[1]}: {value}')
...
look: 1
toward: 1
new: 3
cage: 3
think: 0
surpris: 0
go: 1
see: 1

答案 3 :(得分:1)

data={('look', 'toward'): 1,
 ('new', 'cage'): 3,
 ('think', 'surpris'): 0,
 ('go', 'see'): 1 }



print([k for i in data.keys() for k in i ])

输出:

[['new', 'cage'], ['go', 'see'], ['look', 'toward'], ['think', 'surpris']]

答案 4 :(得分:0)

你想要做的是获取你可以通过my_dict.keys()获得的词典的键列表,并在其中合并元组,如下所示:

my_dict = {('look', 'toward'): 1,
  ('new', 'cage'): 3,
  ('think', 'surpris'): 0,
  ('go', 'see'): 1 }

my_tuple = tuple()
for key in my_dict.keys():
  new_list = new_list + key
print(my_tuple)

这将打印:

('look', 'toward', 'new', 'cage', 'think', 'surpris', 'go', 'see')

你现在可以正常迭代:

for item in my_tuple:
  print(item)

将吐出:

look
toward
new
cage
think
surpris
go
see