如何按顺序打印dic中的值?

2024-04-27 05:21:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我要打印其值中第0个索引元素为1的键。你知道吗

例如,3

[[1, 3], [0, 3], [1, 3], [0, 3], [1, 3]]

值为:

[[1, 3], [0, 3], [1, 3], [0, 3], [1, 3]]

值中的每个第0个索引元素是:

1 0 1 0 1

因此,符合要求的要素是:

[1,3],[1,3],[1,3]

我想把钥匙印一次。所以结果应该是3。你知道吗

代码如下:

data_set = {'1': [[0, 0], [0, 0]], '2': [[0, 2]], '3': [[1, 3], [0, 3], [1, 3], [0, 3], [1, 3]], '4': [[1, 4]], '5': [[1,5], [1,5], [1,5]]}
z = ""
for k,v in data_set.items():
    for item in v:
        if item[0] == 1:
            count = 0
            if z == "" or z[count] != k:
                z += k
            count +=1
print z

我得到的结果是:

35554

预期结果应为:

345

我不知道为什么它首先打印key=3的值,然后移动到key=5的部分。你知道吗

我想这就是我的“如果陈述”不起作用的原因。因为在那部分,我检查钥匙是否被打印出来了。你知道吗

它有什么问题,如何按顺序打印dic中的值?你知道吗


Tags: orkey代码in元素fordataif
2条回答

如果要打印键k,即使值v中只有一个以1开头的值,也不需要计算任何值。就这么做吧

z = ''
for k, v in data_set.items():
    for item in v:
        if item[0] == 1:
            z += k
            break

另一方面,如果您不在Python3上,请使用iteritems而不是items(正如您标记问题python2.7一样,您不在Python3上)。iteritemsitems有效。你知道吗

您可以使用以下代码按顺序打印钥匙:

print ''.join(k for k, v in sorted(data_set.iteritems()) if any(x[0] == 1 for x in v)) # 345

由于字典是无序的data_set.items()将以随机顺序返回键值对。这就解释了为什么输出中5在4之前。通过对返回的项进行排序,然后对它们进行迭代,可以很容易地解决这个问题:sorted(data_set.items())。你知道吗

第二个问题是,由于您总是检查字符串是否为空或第一个字符是否与当前键匹配。这就解释了为什么你的结果有多个5。可以通过将if子句改为检查最后一个字符来修复:

if z == "" or z[-1] != k:
    z += k

相关问题 更多 >