Python3.x将Dict的键转换为可读字符串

时间:2018-02-26 14:48:17

标签: python python-3.x list dictionary

我有一些数字显示用户,在这里我使用了字典,但我无法获得值

此处的输出:

['7965077', '741300', '873720', '36860', '82753', '33190', '5206', '5361','7273', '6201', '7862', '025', '437', '990', '798', '791', '70', '68', '21', '0', '2']
{('Last', 7, 'Digits', 0): '7965077', ('Last', 6, 'Digits', 1): '741300', ('Last', 6, 'Digits', 2): '873720', ('Last', 5, 'Digits', 3): '36860', ('Last', 5, 'Digits', 4): '82753', ('Last', 5, 'Digits', 5): '33190', ('Last', 4, 'Digits', 6): '5206', ('Last', 4, 'Digits', 7): '5361', ('Last', 4, 'Digits', 8): '7273', ('Last', 4, 'Digits', 9): '6201', ('Last', 4, 'Digits', 10): '7862', ('Last', 3, 'Digits', 11): '025', ('Last', 3, 'Digits', 12): '437', ('Last', 3, 'Digits', 13): '990', ('Last', 3, 'Digits', 14): '798', ('Last', 3, 'Digits', 15): '791', ('Last', 2, 'Digits', 16): '70', ('Last', 2, 'Digits', 17): '68', ('Last', 2, 'Digits', 18): '21', ('Last', 1, 'Digits', 19): '0', ('Last', 1, 'Digits', 20): '2'}

第一行是列表形式
第二行是dict形式
我怎样才能像这样转换成这个字典?

最后7位数 7965077个
最后6位数 741300个
873720个
最后5位数 36860个
82753个
33190个
最后4位数 5361
5206
7273
6201
7862

['7965077', '741300', '873720', '36860', '82753', '33190', '5206', '5361', '7273', '6201', '7862', '025', '437', '990', '798', '791', '70', '68', '21', '0', '2']
{('Last', 7, 'Digits', 0): '7965077', ('Last', 6, 'Digits', 1): '741300', ('Last', 6, 'Digits', 2): '873720', ('Last', 5, 'Digits', 3): '36860', ('Last', 5, 'Digits', 4): '82753', ('Last', 5, 'Digits', 5): '33190', ('Last', 4, 'Digits', 6): '5206', ('Last', 4, 'Digits', 7): '5361', ('Last', 4, 'Digits', 8): '7273', ('Last', 4, 'Digits', 9): '6201', ('Last', 4, 'Digits', 10): '7862', ('Last', 3, 'Digits', 11): '025', ('Last', 3, 'Digits', 12): '437', ('Last', 3, 'Digits', 13): '990', ('Last', 3, 'Digits', 14): '798', ('Last', 3, 'Digits', 15): '791', ('Last', 2, 'Digits', 16): '70', ('Last', 2, 'Digits', 17): '68', ('Last', 2, 'Digits', 18): '21', ('Last', 1, 'Digits', 19): '0', ('Last', 1, 'Digits', 20): '2'}

2 个答案:

答案 0 :(得分:0)

如果我说对了,你想要一个字典,其中数字的长度为关键字,匹配数字的列表为数值。

迭代第一个列表并按照它们的长度将它们分组在dict中:

your_list = ['7965077', '741300', '873720', '36860', '82753', '33190', '5206', '5361','7273', '6201', '7862', '025', '437', '990', '798', '791', '70', '68', '21', '0', '2']

res = {}

for item in your_list:
    res.setdefault(len(item), []).append(item)

for k,v in res.items():
    print('Last {} Digits: '.format(k) + ' '.join(v)

# Prints:
# Last 7 Digits: 7965077
# Last 6 Digits: 741300 873720
# Last 5 Digits: 36860 82753 33190
# Last 4 Digits: 5206 5361 7273 6201 7862
# Last 3 Digits: 025 437 990 798 791
# Last 2 Digits: 70 68 21
# Last 1 Digits: 0 2

答案 1 :(得分:0)

您可以使用defaultdict收集数字:

from collections import defaultdict

multikey = {('Last', 7, 'Digits', 0): '7965077', ('Last', 6, 'Digits', 1): '741300', ('Last', 6, 'Digits', 2): '873720', ('Last', 5, 'Digits', 3): '36860', ('Last', 5, 'Digits', 4): '82753', ('Last', 5, 'Digits', 5): '33190', ('Last', 4, 'Digits', 6): '5206', ('Last', 4, 'Digits', 7): '5361', ('Last', 4, 'Digits', 8): '7273', ('Last', 4, 'Digits', 9): '6201', ('Last', 4, 'Digits', 10): '7862', ('Last', 3, 'Digits', 11): '025', ('Last', 3, 'Digits', 12): '437', ('Last', 3, 'Digits', 13): '990', ('Last', 3, 'Digits', 14): '798', ('Last', 3, 'Digits', 15): '791', ('Last', 2, 'Digits', 16): '70', ('Last', 2, 'Digits', 17): '68', ('Last', 2, 'Digits', 18): '21', ('Last', 1, 'Digits', 19): '0', ('Last', 1, 'Digits', 20): '2'}

singlekey = defaultdict(list)

for k,v in multikey.items():
    a,b,c,_ = k
    singlekey[(a,b,c)].append(v)

for k,v in singlekey.items():
    print(' '.join((str(s) for s in k)))
    for n in v:
        print(n)

输出:

Last 7 Digits
7965077
Last 6 Digits
741300
873720
Last 5 Digits
36860
82753
33190
Last 4 Digits
5206
5361
7273
6201
7862
Last 3 Digits
025
437
990
798
791
Last 2 Digits
70
68
21
Last 1 Digits
0
2