python - 将键值对存储为列表理解
问题描述
我有这个功能:
datapoints = 3
abc = ['a','b','c', ... 'z']
character = abc[:datapoints]
for n in character:
values = int(askstring("Title", "Value: ")) # 1
dat1= character.pop(0) # a
dat2 = dat1 + "," + str(values) # a,1
d = dat2.split(",") # [a,1]
data = list((d, d)) # [['a', '1']]
print(data)
不幸的是,每次循环后数据都会被覆盖,因此我得到了这个:
[['a', '1'],['a', '1']]
[['b', '2'],['b', '2']]
[['c', '3'],['c', '3']]
而不是这个:
[['A', 1],['B', 2]],['C', 3]]
我也尝试过 list(zip(d, d)),但这根本没有帮助:
[('a', 'a'),('1', '1')]
[('b', 'b'),('2', '2')]
[('c', 'c'),('3', '3')]
感谢您的任何帮助
解决方案
- 您的循环每次都覆盖
data
and的值,您希望将其放在循环的开头和循环的中间。例子:d
data = []
data.append(d)
data = []
for n in character:
d = ...
data.append(d)
- 您的循环正在从列表中弹出字符
character
并在列表中循环。您想要执行以下任一操作:
for n in character:
dat1 = n
或者:
while character:
dat1 = character.pop(0)
推荐阅读
- visual-studio-2019 - 在 Visual Studio C++ 项目中,是否可以创建像 $(SolutionDir) 这样的项目设置宏?
- html - HTML 元素在刷新时移动
- kubectl - 如何添加自定义 kustomize 变压器?
- azure - Azure Policy 存储帐户诊断日志记录
- django - request.POST.get(variable) 尝试通过 id 接收时返回 None
- prolog - 在序言中使用列表实现多重集
- azure-devops - Azure Pipelines 是否可以使用 sudo 运行 bash 命令?
- python - 使用 pyplor LogLocator 的连续色标和良好范围
- reactjs - S3 bucket next js 私下访问图片
- sql - 如何提高包含部分公共子查询的 SQL 查询性能