python - 元组打印元素 if 条件 else 打印范围内的另一个值

标签 python tuples

我有 2 个列表,其中 1 个是嵌套的。我想用条件将其导出到txt。每个不同的字母都以...开头,即:“Letter,A”,后跟其元组的第三个元素存在,否则打印“,”。存在条件是元组的第二个元素是否在 var 范围内(从 0 到 5):

var=5

letter=['A','B','C','D','E','F','G','H']
nested_list=[
('A', 1, 0),
('A', 2, 0),
('B', 1, 9),
('B', 3, 9),
('C', 2, 0),
('C', 4, 0),
('C', 5, 0),
('D', 2, 9),
('E', 3, 0),
('F', 3, 9)]

到目前为止我的代码:

bd="Letter,"

for i in range(0,len(nested_list)-1):
    if nested_list[i][0]!=nested_list[i+1][0]:
        bd+="\nLetter,%s,"%(nested_list[i][0])
        for j in range(0,var):
            if nested_list[i][1]==j:
                bd+="%s,"%nested_list[i][2]
            else:
                bd+=","
    elif nested_list[i][0]==nested_list[i+1][0]:
        bd+="\n"
        for j in range(0,var):
            if nested_list[i+1][1]==j:
                bd+="%s,"%nested_list[i+1][2]
            else:
                bd+=","

print bd

当前输出:

Letter,A,,,0,,,
Letter,A,,,0,,,B,,,,9,,
Letter,B,,,,9,,C,,,,,0,C,,,,,,
Letter,C,,,,,,
Letter,D,,,9,,,
Letter,E,,,,0,,

预期输出

Letter,A,0,0,,,
Letter,B,9,,9,,
Letter,C,,0,,0,0
Letter,D,,9,,,
Letter,E,,,0,,
Letter,F,,,0,,

请问有什么建议吗?

最佳答案

如果您的列表始终排序正确,我认为这是 itertools.groupby 的一个很好的用例:

In [14]: from itertools import groupby

In [15]: from operator import itemgetter

In [16]: for k, group in groupby(nested_list, itemgetter(0)):
    ...:     plist = ['']*5
    ...:     for _, idx, val in group:
    ...:         plist[idx-1] = str(val)
    ...:     print("Letter,{},{}".format(k, ','.join(plist)))
    ...:
Letter,A,0,0,,,
Letter,B,9,,9,,
Letter,C,,0,,0,0
Letter,D,,9,,,
Letter,E,,,0,,
Letter,F,,,9,,

关于python - 元组打印元素 if 条件 else 打印范围内的另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44164360/

相关文章:

C++ : convert vector to tuple

python - 根据列表中成员的可用性过滤元组列表

c++ - 来自 std::get 的完美转发元组值

python - 修改 Python 列表中的一个元素时出错

python - 用python进行数据处理

python - Matplotlib 标签被剥离/重叠

python - 将文件从 django View 写入静态文件夹(django 通过 apache 2.2 运行): [Errno 2] No such file or directory:

arrays - Swift 3 对元组数组进行排序

python - 列值显示字符串,而有些实际是整数。如何改变整数中的整数

scala - shapeless HList 到 TupleN,其中元组形状不需要与 HList 形状完全匹配