Python 将字典中的键提取为平面列表
我有一个字典对象,如下所示:Python 将字典中的键提取为平面列表,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我有一个字典对象,如下所示: {('look', 'toward'): 1, ('new', 'cage'): 3, ('think', 'surpris'): 0, ('go', 'see'): 1 } 我想做的是分别提取每个单词的 “look”、“toward”、“new”、“cage”……一直到最后,不使用值()。 如何提取这些单词? 写一份清单而不是一本字典更好吗? 如果您能详细解释,我们将不胜感激。如果A是您的口述,提取A的简单方法是: >>> for key
{('look', 'toward'): 1,
('new', 'cage'): 3,
('think', 'surpris'): 0,
('go', 'see'): 1 }
我想做的是分别提取每个单词的
“look”、“toward”、“new”、“cage”……一直到最后,不使用值()。
如何提取这些单词?
写一份清单而不是一本字典更好吗?
如果您能详细解释,我们将不胜感激。如果A是您的口述,提取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
这就是你想要的吗:
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']
你只对键感兴趣,而不是“值”。这些键是用来索引字典的 一种干净的方法是调用
dict.keys()
并使用itertools.chain
将其展平<代码>导入itertools,首先
>>> list(itertools.chain.from_iterable(d.keys()))
['think', 'surpris', 'go', 'see', 'look', 'toward', 'new', 'cage']
请注意,返回字符串的顺序不能保证,因为python的字典在3.6之前的版本上是不排序的。您要做的是获取字典的键列表,您可以使用
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
输出:
[['new', 'cage'], ['go', 'see'], ['look', 'toward'], ['think', 'surpris']]
您不必使用
values()
,因为您后面的值是dict的键
,而不是值
。考虑到订单,无法保证,因为dict不理解这个概念(或者没有达到版本3.6,但这只是一个不能指望的实现细节)。好的。谢谢你指出我的误解。
[['new', 'cage'], ['go', 'see'], ['look', 'toward'], ['think', 'surpris']]