gpt4 book ai didi

python - 字典理解破坏键列表

转载 作者:太空狗 更新时间:2023-10-30 02:02:35 26 4
gpt4 key购买 nike

我正在尝试用 Python 实现排名投票系统。我有这段代码:

import numpy as np
import itertools

candidates = ['Bob', 'Alice', 'Jim', 'Sarah', 'Paul', 'Jordan']

votes = np.matrix(
'1 2 5 3 4 6;' \
'1 2 3 4 5 6;' \
'5 1 2 4 3 6;' \
'6 2 1 3 4 5;' \
'4 3 2 1 5 7'
)

pairs = itertools.combinations(candidates, 2) # All pairs of candidates

d = dict.fromkeys(pairs, 0)

for pair in pairs:
print(pair)

字典是:

d
=> {('Paul', 'Jordan'): 0, ('Alice', 'Sarah'): 0, ('Alice', 'Jim'): 0, ('Alice', 'Paul'): 0, ('Jim', 'Sarah'): 0, ('Sarah', 'Paul'): 0, ('Bob', 'Alice'): 0, ('Bob', 'Jordan'): 0, ('Jim', 'Jordan'): 0, ('Jim', 'Paul'): 0, ('Sarah', 'Jordan'): 0, ('Bob', 'Paul'): 0, ('Bob', 'Sarah'): 0, ('Bob', 'Jim'): 0, ('Alice', 'Jordan'): 0}

这就是我想要的。但是这样做似乎破坏了元组列表,

如果我取出字典行,代码输出:

('Bob', 'Alice')
('Bob', 'Jim')
('Bob', 'Sarah')
('Bob', 'Paul')
('Bob', 'Jordan')
('Alice', 'Jim')
('Alice', 'Sarah')
('Alice', 'Paul')
('Alice', 'Jordan')
('Jim', 'Sarah')
('Jim', 'Paul')
('Jim', 'Jordan')
('Sarah', 'Paul')
('Sarah', 'Jordan')
('Paul', 'Jordan')

对于字典行,什么也打印不出来。

我还尝试了字典理解

d = {pair: 0 for pair in pairs}

同样的事情发生了。为什么要销毁 pairs 列表?

最佳答案

你拥有的是一个生成器,而不是一个典型的元组列表。将生成器传递给 dict.fromkeys是有效的,因为它是可迭代的,但是在对迭代一次之后,一个 StopIteration当您尝试再次迭代以打印它们时调用

您可以在创建时通过添加以下内容将对转换为列表:

pairs = <b>list(</b>itertools.combinations(candidates, 2)<b>)</b>

关于python - 字典理解破坏键列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40428599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com