когда я пытаюсь добавить значение в dict его ошибка показа ключа - PullRequest
0 голосов
/ 29 марта 2012

У меня есть css-файл этого типа

col1    col2
AAA       
 a        1
  a1      1
  a2      1
 b        1
  b1      1
  b2      1

Я читаю первый столбец на основе отступа, "AAA" имеет 0 без пробелов, "a" "b" имеет 1 пробел и "a1"," a2 "" b1 "" b2 "имеет 2 пробела, теперь я печатаю dict как

d={'a':['a1','a2'],'b':['b1','b2']}

Но я хочу

d={'AAA':['a','b'],'a':['a1','a2'],'b':['b1','b2']}

Я использую код, подобный этому

reader=csv.DictReader(open("c:/Users/Darshan/Desktop/sss.csv"),dialect="excel")
for row in reader:
    a.append(row['col1'])
    for i in range(len(a)):
        if a[i].count(' ')==1:
            d[a[i]]=[]
            k=a[i]

        else a[i].count(' ')==2:
            d[k].append(a[i])

это распечатать этот вывод

 d={'a':['a1','a2'],'b':['b1','b2']}

так что кто-нибудь может мне помочь, заранее спасибо

1 Ответ

3 голосов
/ 29 марта 2012

Что если вы просто измените свой цикл for на это:

# A variable to keep track of the least-nested level of your hierarchy
top_lvl = ''
k = ''
for i in range(len(a)):
    # Pre-compute this value so you don't have to do it twice or more
    c = a[i].count(' ')
    # This case is the topmost level
    if c == 0:
        top_lvl = a[i]
        d[top_lvl] = []
    # This case is the middle level
    elif c == 1:
        d[a[i]]=[]
        k=a[i]
        d[top_lvl].append(k)
    # This case is the most deeply nested level
    else: # c==2
        d[k].append(a[i])

На самом деле теперь, когда я делаю все очень мило, вы, вероятно, можете просто перебирать значения в a напрямую, безссылаясь на его значения по индексу.Вот так:

# A variable to keep track of the least-nested level of your hierarchy
top_lvl = ''
# More descriptive variable names can make everything easier to read/understand
mid_lvl = ''
for val in a:
    # Pre-compute this value so you don't have to do it twice or more
    c = val.count(' ')
    # This case is the topmost level
    if c == 0:
        top_lvl = val
        d[val] = []
    # This case is the middle level
    elif c == 1:
        d[val]=[]
        mid_lvl =val
        d[top_lvl].append(mid_lvl)
    # This case is the most deeply nested level
    else: # c==2
        d[mid_lvl].append(val)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...