Как перебрать список кортежей ключ-значение? - PullRequest
0 голосов
/ 04 февраля 2020

Я отсортировал словарь с помощью метода sorted (), и он возвращает список кортежей со значением ключа как: -

MyDict = {'a': 8, 'b': 4, 'c': 3, 'd': 1, 'e': 0, 'f': 0, 'g': 1, 'h' :1}
data = sorted(MyDict.items(), key=lambda x: x[1], reverse=True)
print(data)

Вывод: -

[('a', 8), ('b', 4), ('c', 3), ('d', 1), ('g', 1), ('h', 1), ('e', 0), ('f', 0)]

Теперь я хочу перебрать его, используя для l oop и распечатать ключи, а также значения, которые делятся на k (k может дать мне любое целое число). Это кажется основным вопросом, но я новичок, и мне это кажется сложным. Помощь будет очень признателен.

Ответы [ 3 ]

1 голос
/ 04 февраля 2020

Попробуйте следующее:

num = 1

for key, value in data:
    if value % num == 0:
        print("Key: {0} Value: {1}".format(key, value))
1 голос
/ 04 февраля 2020

вам не нужно преобразовывать словарь в список кортежей для этого. Попробуйте это:

MyDict = {'a': 8, 'b': 4, 'c': 3, 'd': 1, 'e': 0, 'f': 0, 'g': 1, 'h' :1}

k = 2   # it can be any value as you say

for key,val in MyDict.iteritems():
    if val%k ==0:
        print("Key - {0} and value - {1}".format(key,val))

Если вам все еще нужно преобразовать данный словарь в список кортежей и затем использовать его, вот как вы можете это сделать.

MyDict = {'a': 8, 'b': 4, 'c': 3, 'd': 1, 'e': 0, 'f': 0, 'g': 1, 'h' :1}
data = sorted(MyDict.items(), key=lambda x: x[1], reverse=True)

k = 2  # any int value you want.

for item in data:
    if item[1]%k == 0:
        print("Key - {0} and value - {1}".format(item[0],item[1]))
1 голос
/ 04 февраля 2020
k = 4
data = [('a', 8), ('b', 4), ('c', 3), ('d', 1), ('g', 1), ('h', 1), ('e', 0), ('f', 0)]

for item in data:
    if item[1] % k == 0:
        print('Key = %s, Value = %.i' % (item[0], item[1]))

Выход:

Key = a, Value = 8
Key = b, Value = 4
Key = e, Value = 0
Key = f, Value = 0
...